From 7686dd0eccdd6048dca546e2e374b3f4c8f32141 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sat, 4 Feb 2017 02:38:20 +0100 Subject: [PATCH] prevent to check for final attribs inside templates since they might be mixed or not, in structs or not --- src/analysis/final_attribute.d | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/analysis/final_attribute.d b/src/analysis/final_attribute.d index 89ae0ec..8abde68 100644 --- a/src/analysis/final_attribute.d +++ b/src/analysis/final_attribute.d @@ -110,6 +110,16 @@ public: _parent = saved; } + override void visit(const(MixinTemplateDeclaration) mtd) + { + // can't really know where it'll be mixed (class |final class | struct ?) + } + + override void visit(const(TemplateDeclaration) mtd) + { + // regular template are also mixable + } + override void visit(const(Declaration) d) { const Parent savedParent = _parent; @@ -266,6 +276,13 @@ public: } }, sac); + assertAnalyzerWarnings(q{ + mixin template Impl() + { + protected final void mixin_template_can() {} + } + }, sac); + // fail assertAnalyzerWarnings(q{