diff --git a/src/analysis/final_attribute.d b/src/analysis/final_attribute.d index 551f223..bb225ab 100644 --- a/src/analysis/final_attribute.d +++ b/src/analysis/final_attribute.d @@ -159,7 +159,7 @@ public: if (d.classDeclaration || d.structDeclaration || d.unionDeclaration) { _finalAggregate = isFinal; - if (savedParent == Parent.module_) + if (_finalAggregate && savedParent == Parent.module_) { if (d.structDeclaration) addError(d.structDeclaration, MESSAGE.struct_i); @@ -224,6 +224,14 @@ public: void foo(){void foo(){}} }, sac); + assertAnalyzerWarnings(q{ + struct S{} + }, sac); + + assertAnalyzerWarnings(q{ + union U{} + }, sac); + assertAnalyzerWarnings(q{ class Foo{public final void foo(){}} }, sac);