Skip to content

Commit 1e75803

Browse files
committed
fix abstract base w/ unimplemented interface runtime bug
1 parent f9af3ac commit 1e75803

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

compiler/src/dmd/semantic2.d

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -728,11 +728,16 @@ private extern(C++) final class Semantic2Visitor : Visitor
728728

729729
checkInterfaceImplementations(cd, cd, false);
730730
if(!cd.isAbstract()) {
731-
if(cd.baseclasses.length) {
732-
auto base = (*cd.baseclasses)[0].sym;
733-
if(base && base.isAbstract)
734-
checkInterfaceImplementations(cd, base, true);
731+
void confirmBases(ClassDeclaration thingToCheck) {
732+
if(thingToCheck.baseclasses.length) {
733+
auto base = (*thingToCheck.baseclasses)[0].sym;
734+
if(base && base.isAbstract) {
735+
checkInterfaceImplementations(cd, base, true);
736+
confirmBases(base);
737+
}
738+
}
735739
}
740+
confirmBases(cd);
736741
}
737742

738743
visit(cast(AggregateDeclaration) cd);

0 commit comments

Comments
 (0)