mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-11 18:33:14 +01:00
fix Issue 8675 - Nothrow can't throw Errors
- fixed by checking whether the thrown exception is derived from Error before complaining about uncaught throws
This commit is contained in:
@@ -5112,8 +5112,17 @@ Statement *ThrowStatement::semantic(Scope *sc)
|
||||
int ThrowStatement::blockExit(bool mustNotThrow)
|
||||
{
|
||||
if (mustNotThrow)
|
||||
error("%s is thrown but not caught", exp->type->toChars());
|
||||
return BEthrow; // obviously
|
||||
{
|
||||
ClassDeclaration *cd = exp->type->toBasetype()->isClassHandle();
|
||||
assert(cd);
|
||||
|
||||
// Bugzilla 8675
|
||||
// Throwing Errors is allowed even if mustNotThrow
|
||||
if (cd != ClassDeclaration::errorException &&
|
||||
!ClassDeclaration::errorException->isBaseOf(cd, NULL))
|
||||
error("%s is thrown but not caught", exp->type->toChars());
|
||||
}
|
||||
return BEthrow;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user