summaryrefslogtreecommitdiff
path: root/test/cedet/tests/testusing.cpp
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2009-09-28 23:23:31 +0000
committerChong Yidong <cyd@stupidchicken.com>2009-09-28 23:23:31 +0000
commit74ea13c1a8d63e4f4015e2b9e7e4336e546e7e4a (patch)
treed895d7e93cf93022f48bd6d173f616f1bb4b99fc /test/cedet/tests/testusing.cpp
parentb9de0a4665563f847bc7c94f8c89180bf2a9f6bd (diff)
downloademacs-74ea13c1a8d63e4f4015e2b9e7e4336e546e7e4a.tar.gz
Add CEDET tests.
Diffstat (limited to 'test/cedet/tests/testusing.cpp')
-rw-r--r--test/cedet/tests/testusing.cpp132
1 files changed, 132 insertions, 0 deletions
diff --git a/test/cedet/tests/testusing.cpp b/test/cedet/tests/testusing.cpp
new file mode 100644
index 00000000000..b35f3a13063
--- /dev/null
+++ b/test/cedet/tests/testusing.cpp
@@ -0,0 +1,132 @@
+// Test using statements in C++
+
+#include <adstdio.h>
+
+#include <testusing.hh>
+
+namespace moose {
+
+ class MyClass;
+ class Point;
+
+ typedef MyClass snerk;
+}
+
+namespace moose {
+
+ class Point;
+ class MyClass;
+
+}
+
+namespace {
+
+ int global_variable = 0;
+
+};
+
+using moose::MyClass;
+
+void someFcn() {
+
+ MyClass f;
+
+ f.//-1-
+ ; //#1# ( "getVal" "setVal" )
+
+}
+
+// Code from Zhiqiu Kong
+
+namespace panda {
+
+ using namespace bread_name;
+
+ int func()
+ {
+ bread test;
+ test.//-2-
+ ;// #2# ( "geta" )
+ return 0;
+ }
+}
+
+// Local using statements and aliased types
+// Code from David Engster
+
+void func2()
+{
+ using namespace somestuff;
+ OneClass f;
+ f.//-3-
+ ; //#3# ( "aFunc" "anInt" )
+}
+
+void func3()
+{
+ using somestuff::OneClass;
+ OneClass f;
+ f.//-4-
+ ; //#4# ( "aFunc" "anInt" )
+}
+
+// Dereferencing alias types created through 'using' statements
+
+// Alias with fully qualified name
+void func4()
+{
+ otherstuff::OneClass f;
+ f. //-5-
+ ; //#5# ( "aFunc" "anInt" )
+}
+
+// Alias through namespace directive
+void func5()
+{
+ using namespace otherstuff;
+ OneClass f;
+ f. //-6-
+ ; //#6# ( "aFunc" "anInt" )
+}
+
+// Check name hiding
+void func6()
+{
+ using namespace morestuff;
+ OneClass f; // Alias for somestuff::OneClass
+ f. //-7-
+ ; //#7# ( "aFunc" "anInt" )
+ aStruct g; // This however is morestuff::aStruct !
+ g. //-8-
+ ; //#8# ( "anotherBar" "anotherFoo" )
+}
+
+// Alias of an alias
+// Currently doesn't work interactively for some reason.
+void func6()
+{
+ using namespace evenmorestuff;
+ OneClass f;
+ f. //-7-
+ ; //#7# ( "aFunc" "anInt" )
+}
+
+// Alias for struct in nested namespace, fully qualified
+void func7()
+{
+ outer::StructNested f;
+ f.//-8-
+ ; //#8# ( "one" "two" )
+}
+
+// Alias for nested namespace
+void func8()
+{
+ using namespace outerinner;
+ StructNested f;
+ AnotherStruct g;
+ f.//-9-
+ ; //#9# ( "one" "two" )
+ g.//-10-
+ ; //#10# ( "four" "three" )
+}