Merged DMD commit ac685a4b2ec07af83f687f41496e3af02e3f0fe:

bugzilla 190 and 4753
This commit is contained in:
David Nadlinger
2011-04-22 19:08:44 +02:00
parent ab749efffa
commit 2c081edfcd
3 changed files with 16 additions and 1 deletions

View File

@@ -3935,6 +3935,7 @@ TypeTypeof::TypeTypeof(Loc loc, Expression *exp)
: TypeQualified(Ttypeof, loc)
{
this->exp = exp;
inuse = 0;
}
Type *TypeTypeof::syntaxCopy()
@@ -3981,6 +3982,13 @@ Type *TypeTypeof::semantic(Loc loc, Scope *sc)
//printf("TypeTypeof::semantic() %p\n", this);
//static int nest; if (++nest == 50) *(char*)0=0;
if (inuse)
{
inuse = 2;
error(loc, "circular typeof definition");
return Type::terror;
}
inuse++;
#if 0
/* Special case for typeof(this) and typeof(super) since both
@@ -4077,9 +4085,11 @@ Type *TypeTypeof::semantic(Loc loc, Scope *sc)
goto Lerr;
}
}
inuse--;
return t;
Lerr:
inuse--;
return terror;
}