Mercurial > projects > ldc
diff gen/toir.cpp @ 834:f466f475b654
Added proper "need 'this' to access member foo" errors instead of "variable foo not resolved" for some cases, added FIXME for the old error!
Added a bit more information to the runtime's cyclic dependency detection exception.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Tue, 09 Dec 2008 01:56:39 +0100 |
parents | a70ddd449e7d |
children | 14c3319ac1bb |
line wrap: on
line diff
--- a/gen/toir.cpp Sun Dec 07 16:43:20 2008 +0100 +++ b/gen/toir.cpp Tue Dec 09 01:56:39 2008 +0100 @@ -56,10 +56,18 @@ LOG_SCOPE; assert(var); + if (VarDeclaration* vd = var->isVarDeclaration()) { Logger::println("VarDeclaration ' %s ' of type ' %s '", vd->toChars(), vd->type->toChars()); + // this is an error! must be accessed with DotVarExp + if (var->needThis()) + { + error("need 'this' to access member %s", toChars()); + fatal(); + } + // _arguments if (vd->ident == Id::_arguments && p->func()->_arguments) { @@ -144,6 +152,9 @@ LLValue* val; if (!vd->ir.isSet() || !(val = vd->ir.getIrValue())) { + // FIXME: this error is bad! + // We should be VERY careful about adding errors in general, as they have + // a tendency to "mask" out the underlying problems ... error("variable %s not resolved", vd->toChars()); if (Logger::enabled()) Logger::cout() << "unresolved variable had type: " << *DtoType(vd->type) << '\n';