diff --git a/src/expression.c b/src/expression.c index efeef478d300..f443ea3d1bff 100644 --- a/src/expression.c +++ b/src/expression.c @@ -7097,7 +7097,7 @@ Expression *DotVarExp::semantic(Scope *sc) if (e) return e; - if (v->isDataseg()) // fix bugzilla 8238 + if (v && v->isDataseg()) // fix bugzilla 8238 { // (e1, v) accessCheck(loc, sc, e1, v); diff --git a/test/fail_compilation/ice9545.d b/test/fail_compilation/ice9545.d new file mode 100644 index 000000000000..45dd195197f1 --- /dev/null +++ b/test/fail_compilation/ice9545.d @@ -0,0 +1,13 @@ +/* +TEST_OUTPUT: +---- +fail_compilation/ice9545.d(12): Error: T is not a field, but a alias +---- +*/ + +struct S { template T(X) { alias T = X; } } + +void main() +{ + auto x1 = S.init.T!int; // ICE +}