From 93c3dcf26f5c5ae612ccce044012d2b297fe46bf Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Thu, 4 Aug 2016 12:28:33 +0200 Subject: [PATCH] fix Issue 16348 - ICE with package visibility - fix scopesym parent chain when using semanticScope - fixes getAccessModule for scope symbols in do bodies, try bodies, and else branches --- src/statement.d | 4 +++- test/compilable/imports/test16348.d | 6 ++++++ test/compilable/test16348.d | 13 +++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 test/compilable/imports/test16348.d create mode 100644 test/compilable/test16348.d diff --git a/src/statement.d b/src/statement.d index bde05953fd73..0bda2fce51c9 100644 --- a/src/statement.d +++ b/src/statement.d @@ -192,7 +192,9 @@ public: // Same as semanticNoScope(), but do create a new scope final Statement semanticScope(Scope* sc, Statement sbreak, Statement scontinue) { - Scope* scd = sc.push(); + auto sym = new ScopeDsymbol(); + sym.parent = sc.scopesym; + Scope* scd = sc.push(sym); if (sbreak) scd.sbreak = sbreak; if (scontinue) diff --git a/test/compilable/imports/test16348.d b/test/compilable/imports/test16348.d new file mode 100644 index 000000000000..c9f871cc43a3 --- /dev/null +++ b/test/compilable/imports/test16348.d @@ -0,0 +1,6 @@ +module mypackage.bar; + +package bool bar() +{ + return false; +} diff --git a/test/compilable/test16348.d b/test/compilable/test16348.d new file mode 100644 index 000000000000..4efe24f11907 --- /dev/null +++ b/test/compilable/test16348.d @@ -0,0 +1,13 @@ +// EXTRA_SOURCES: imports/test16348.d +module mypackage.foo; + +void bug() +{ + // removing the if-else also removes the segfault + if (true) {} + else + { + import mypackage.bar; + auto b = bar(); + } +}