From 4c74ac2bdab835014c3f1d326c33e4d9f914ec38 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Mon, 20 Feb 2017 14:53:44 +0100 Subject: [PATCH] Same name check: differentiate between version blocks --- src/analysis/label_var_same_name_check.d | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/analysis/label_var_same_name_check.d b/src/analysis/label_var_same_name_check.d index 6588c73..07b06b7 100644 --- a/src/analysis/label_var_same_name_check.d +++ b/src/analysis/label_var_same_name_check.d @@ -50,6 +50,13 @@ class LabelVarNameCheck : BaseAnalyzer --conditionalDepth; } + override void visit(const VersionCondition condition) + { + ++conditionalDepth; + condition.accept(this); + --conditionalDepth; + } + alias visit = BaseAnalyzer.visit; private: @@ -168,6 +175,21 @@ void main(string[] args) int b; } +unittest +{ + version (Windows) + int c = 10; + else + int c = 20; + int c; // [warn]: Variable "c" has the same name as a variable defined on line 51. +} + +unittest +{ + version(LittleEndian) { enum string NAME = "UTF-16LE"; } + else version(BigEndian) { enum string NAME = "UTF-16BE"; } +} + }c, sac); stderr.writeln("Unittest for LabelVarNameCheck passed."); }