From 4ab930bc8617be1eca7492ec85471d37b6d4c9d5 Mon Sep 17 00:00:00 2001
From: David Engster <dengste@eml.cc>
Date: Mon, 18 Nov 2013 23:11:17 +0100
Subject: [PATCH] C++: Deal with 'using' statements when calculating scope

* semantic/bovine/c.el (semantic-ctxt-scoped-types): Go through all
  tags around point and search them for using statements.  Before, we
  skipped the last one thinking that it would have to be function, but
  it could also be a type.

* semantic/scope.el (semantic-completable-tags-from-type): When
  creating the list of completable types, pull in types which are
  referenced through 'using' statements.

* tests/cedet/semantic/test/manual/cedet/testusing.cpp:
* tests/cedet/semantic/test/manual/cedet/testusing.hh: Add tests for
  the above.
---
 .../cedet/cedet/semantic/tests/testusing.hh      | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/test/manual/cedet/cedet/semantic/tests/testusing.hh b/test/manual/cedet/cedet/semantic/tests/testusing.hh
index 61b5d08e106..471891a88d4 100644
--- a/test/manual/cedet/cedet/semantic/tests/testusing.hh
+++ b/test/manual/cedet/cedet/semantic/tests/testusing.hh
@@ -123,6 +123,22 @@ namespace outer {
   }
 }
 
+// Namespace which pulls in one of its own nested namespaces
+namespace first {
+  class AAA1;
+  namespace second {
+    class AAA2;
+  }
+  // Elevate nested namespace into first one
+  using namespace second;
+}
+
+namespace third {
+  using namespace first;
+  class AAA3;
+}
+
+
 // Elevate the first struct into 'outer'
 // so that we can access it via 'outer::StructNested'
 namespace outer {
-- 
2.39.5