1 /* testnsp.cpp --- semantic-ia-utest completion engine unit tests
2
3 Copyright (C) 2008-2023 Free Software Foundation, Inc.
4
5 Author: Eric M. Ludlam <zappo@gnu.org>
6
7 This file is part of GNU Emacs.
8
9 GNU Emacs is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13
14 GNU Emacs is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
21 */
22
23 namespace nsp {
24
25 class rootclass {
26 public:
27 int fromroot() {};
28 };
29
30 }
31
32 namespace nsp {
33 class childclass : public rootclass {
34 public:
35 int fromchild() {};
36 };
37 }
38
39 void myfcn_not_in_ns (void) {
40 nsp::childclass test;
41
42 test.// -1-
43 ; // #1# ( "fromchild" "fromroot" )
44 }
45
46 // Test a class declared in a class, where the contents
47 // are in a qualified name.
48 //
49 // Thanks Michael Reiher for the concise example.
50
51 class AAA
52 {
53 public:
54 AAA();
55
56 void aaa();
57
58 private:
59 class Private;
60 Private * const d;
61 };
62
63 class AAA::Private
64 {
65 Private() : bbb(0) {
66 }
67
68 BBB* bbb;
69 };
70
71 void AAA::aaa()
72 {
73 d->// -2-
74 ; // #2# ( "bbb" )
75 }
76
77 // #include files inside a namespace
78 // David Engster <deng@randomsample.de>
79 // See revisions 8034-8037 which implement this.
80
81 namespace another {
82 #include "testdoublens.hpp"
83 }
84
85 void foo(void) {
86
87 another::// -3-
88 ; // #3# ( "Name1" "a" "stage3_Foo" )
89
90 another::Name1::Name2::Foo a;
91
92 a.// -4-
93 ; // #4# ( "Mumble" "get" )
94 }
95
96 // What happens if a type your looking for is scoped within a type,
97 // but you are one level into the completion so the originating scope
98 // excludes the type of the variable you are completing through?
99 // Thanks Martin Stein for this nice example.
100
101 namespace ms_structs
102 {
103 struct ms_aaa
104 {
105 int xx;
106 };
107
108 struct ms_bbb
109 {
110 struct ms_aaa yy;
111 };
112 };
113
114 int fun()
115 {
116 using namespace ms_structs;
117 struct ms_bbb mszz;
118 int uu = mszz.// -5-
119 ; // #5# ( "yy" )
120 int kk = mszz.yy.// - 6- @TODO - bring in patch from SF
121 ; // #6# ( "xx" )
122 }