mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-09-02 11:40:04 +02:00
Merged DMD commit ac685a4b2ec07af83f687f41496e3af02e3f0fe:
bugzilla 190 and 4753
This commit is contained in:
10
dmd/mtype.c
10
dmd/mtype.c
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user