Merge DMD r278: bugzilla 370 Compiler stack overflow on recursive...

bugzilla 370 Compiler stack overflow on recursive typeof in function
declaration.
---
 dmd/expression.c |    1 +
 dmd/mtype.c      |    7 +++++--
 2 files changed, 6 insertions(+), 2 deletions(-)
This commit is contained in:
Leandro Lucarella
2010-01-06 15:18:21 -03:00
parent 08a4454919
commit ddb0f3f209
2 changed files with 6 additions and 2 deletions

View File

@@ -2266,6 +2266,7 @@ Lagain:
if (!f->type->deco)
{
error("forward reference to %s", toChars());
return new ErrorExp();
}
return new VarExp(loc, f);
}

View File

@@ -3935,6 +3935,7 @@ Type *TypeTypeof::semantic(Loc loc, Scope *sc)
if (exp->op == TOKtype)
{
error(loc, "argument %s to typeof is not an expression", exp->toChars());
goto Lerr;
}
t = exp->type;
if (!t)
@@ -3943,7 +3944,9 @@ Type *TypeTypeof::semantic(Loc loc, Scope *sc)
goto Lerr;
}
if (t->ty == Ttypeof)
error(loc, "forward reference to %s", toChars());
{ error(loc, "forward reference to %s", toChars());
goto Lerr;
}
}
if (idents.dim)
@@ -3972,7 +3975,7 @@ Type *TypeTypeof::semantic(Loc loc, Scope *sc)
return t;
Lerr:
return tvoid;
return terror;
}
d_uns64 TypeTypeof::size(Loc loc)