From 783410390ee38c35541c0db825906025e94be491 Mon Sep 17 00:00:00 2001 From: Hackerpilot Date: Thu, 12 Mar 2015 11:48:53 -0700 Subject: [PATCH] Fix #92 --- src/dfmt.d | 10 ++++++++++ tests/issue0092.d | 12 ++++++++++++ tests/issue0092.d.ref | 12 ++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 tests/issue0092.d create mode 100644 tests/issue0092.d.ref diff --git a/src/dfmt.d b/src/dfmt.d index d8a9769..50647e0 100644 --- a/src/dfmt.d +++ b/src/dfmt.d @@ -954,6 +954,11 @@ private: } else if (currentIs(tok!"identifier") && peekIs(tok!":")) { + while ((peekBackIs(tok!"}", true) || peekBackIs(tok!";", true)) + && indents.length && isTempIndent(indents.top())) + { + indents.pop(); + } auto l = indents.indentToMostRecent(tok!"switch"); if (l != -1) { @@ -970,6 +975,11 @@ private: } else if (currentIs(tok!"case") || currentIs(tok!"default")) { + while ((peekBackIs(tok!"}", true) || peekBackIs(tok!";", true)) + && indents.length && isTempIndent(indents.top())) + { + indents.pop(); + } auto l = indents.indentToMostRecent(tok!"switch"); if (l != -1) indentLevel = l; diff --git a/tests/issue0092.d b/tests/issue0092.d new file mode 100644 index 0000000..64f2ab6 --- /dev/null +++ b/tests/issue0092.d @@ -0,0 +1,12 @@ +unittest +{ + switch (cast(uint) sz) + { + case 3: + if (!global.params.is64bit) + goto Lmemory; + case 4: + t1 = Type.tint32; + break; + } +} diff --git a/tests/issue0092.d.ref b/tests/issue0092.d.ref new file mode 100644 index 0000000..cdbff8c --- /dev/null +++ b/tests/issue0092.d.ref @@ -0,0 +1,12 @@ +unittest +{ + switch (cast(uint) sz) + { + case 3: + if (!global.params.is64bit) + goto Lmemory; + case 4: + t1 = Type.tint32; + break; + } +}