aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/dmd/expressionsem.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/d/dmd/expressionsem.c')
-rw-r--r--gcc/d/dmd/expressionsem.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/gcc/d/dmd/expressionsem.c b/gcc/d/dmd/expressionsem.c
index ebdfae5..5177f9f 100644
--- a/gcc/d/dmd/expressionsem.c
+++ b/gcc/d/dmd/expressionsem.c
@@ -1806,11 +1806,19 @@ public:
Expression *e;
if (ea && ta->toBasetype()->ty == Tclass)
{
- /* Get the dynamic type, which is .classinfo
- */
- ea = semantic(ea, sc);
- e = new TypeidExp(ea->loc, ea);
- e->type = Type::typeinfoclass->type;
+ if (!Type::typeinfoclass)
+ {
+ error(exp->loc, "`object.TypeInfo_Class` could not be found, but is implicitly used");
+ e = new ErrorExp();
+ }
+ else
+ {
+ /* Get the dynamic type, which is .classinfo
+ */
+ ea = semantic(ea, sc);
+ e = new TypeidExp(ea->loc, ea);
+ e->type = Type::typeinfoclass->type;
+ }
}
else if (ta->ty == Terror)
{