Enhance "case" code completion in C++ to suggest qualified names for
enumerators when either the user intentionally wrote a qualified name
(in which case we just use that nested-name-specifier to match
the user's code) or when this is the first "case" statement and we
need a qualified name to refer to an enumerator in a different scope.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82474 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/CodeCompletion/enum-switch-case-qualified.cpp b/test/CodeCompletion/enum-switch-case-qualified.cpp
new file mode 100644
index 0000000..fc1b0ea
--- /dev/null
+++ b/test/CodeCompletion/enum-switch-case-qualified.cpp
@@ -0,0 +1,33 @@
+// RUN: clang-cc -fsyntax-only -code-completion-dump=1 %s -o - | FileCheck -check-prefix=CC1 %s &&
+// RUN: true
+
+namespace M {
+  
+namespace N {
+  struct C {
+    enum Color {
+      Red,
+      Orange,
+      Yellow,
+      Green,
+      Blue,
+      Indigo,
+      Violet
+    };
+  };
+}
+  
+}
+
+namespace M {
+  
+void test(enum N::C::Color color) {
+  switch (color) {
+      // CHECK-NEXT-CC1: Blue : 0 : N::C::Blue
+      // CHECK-NEXT-CC1: Green : 0 : N::C::Green
+      // CHECK-NEXT-CC1: Indigo : 0 : N::C::Indigo
+      // CHECK-NEXT-CC1: Orange : 0 : N::C::Orange
+      // CHECK-NEXT-CC1: Red : 0 : N::C::Red
+      // CHECK-NEXT-CC1: Violet : 0 : N::C::Violet
+      // CHECK-NEXT-CC1: Yellow : 0 : N::C::Yellow
+    case 
diff --git a/test/CodeCompletion/enum-switch-case.cpp b/test/CodeCompletion/enum-switch-case.cpp
new file mode 100644
index 0000000..49b33c8
--- /dev/null
+++ b/test/CodeCompletion/enum-switch-case.cpp
@@ -0,0 +1,29 @@
+// RUN: clang-cc -fsyntax-only -code-completion-dump=1 %s -o - | FileCheck -check-prefix=CC1 %s &&
+// RUN: true
+
+namespace N {
+  enum Color {
+    Red,
+    Orange,
+    Yellow,
+    Green,
+    Blue,
+    Indigo,
+    Violet
+  };
+}
+
+void test(enum N::Color color) {
+  switch (color) {
+    case N::Red:
+      break;
+      
+    case N::Yellow:
+      break;
+      
+      // CHECK-CC1: Blue : 0 : N::Blue
+      // CHECK-NEXT-CC1: Green : 0 : N::Green
+      // CHECK-NEXT-CC1: Indigo : 0 : N::Indigo
+      // CHECK-NEXT-CC1: Orange : 0 : N::Orange
+      // CHECK-NEXT-CC1: Violet : 0 : N::Violet
+    case