@@ -23,3 +23,35 @@ def test(self):
23
23
# But we should still find the function when we pretend the inline
24
24
# namespace is not inline.
25
25
self .expect_expr ("A::B::f()" , result_type = "int" , result_value = "3" )
26
+
27
+ self .expect_expr ("A::B::global_var" , result_type = "int" , result_value = "0" )
28
+ # FIXME: should be ambiguous lookup but ClangExpressionDeclMap takes
29
+ # first global variable that the lookup found, which in this case
30
+ # is A::B::global_var
31
+ self .expect_expr ("A::global_var" , result_type = "int" , result_value = "0" )
32
+
33
+ self .expect_expr ("A::B::C::global_var" , result_type = "int" , result_value = "1" )
34
+ self .expect_expr ("A::C::global_var" , result_type = "int" , result_value = "1" )
35
+
36
+ self .expect_expr ("A::B::D::nested_var" , result_type = "int" , result_value = "2" )
37
+ self .expect_expr ("A::D::nested_var" , result_type = "int" , result_value = "2" )
38
+ self .expect_expr ("A::B::nested_var" , result_type = "int" , result_value = "2" )
39
+ self .expect_expr ("A::nested_var" , result_type = "int" , result_value = "2" )
40
+
41
+ self .expect_expr ("A::E::F::other_var" , result_type = "int" , result_value = "3" )
42
+ self .expect_expr ("A::E::other_var" , result_type = "int" , result_value = "3" )
43
+
44
+ self .expect ("expr A::E::global_var" , error = True , substrs = ["no member named 'global_var' in namespace 'A::E'" ])
45
+ self .expect ("expr A::E::F::global_var" , error = True , substrs = ["no member named 'global_var' in namespace 'A::E::F'" ])
46
+
47
+ self .expect ("expr A::other_var" , error = True , substrs = ["no member named 'other_var' in namespace 'A'" ])
48
+ self .expect ("expr A::B::other_var" , error = True , substrs = ["no member named 'other_var' in namespace 'A::B'" ])
49
+ self .expect ("expr B::other_var" , error = True , substrs = ["no member named 'other_var' in namespace 'A::B'" ])
50
+
51
+ # 'frame variable' can correctly distinguish between A::B::global_var and A::global_var
52
+ gvars = self .target ().FindGlobalVariables ("A::global_var" , 10 )
53
+ self .assertEqual (len (gvars ), 1 )
54
+ self .assertEqual (gvars [0 ].GetValueAsSigned (), 4 )
55
+
56
+ self .expect ("frame variable A::global_var" , substrs = ["(int) A::global_var = 4" ])
57
+ self .expect ("frame variable A::B::global_var" , substrs = ["(int) A::B::global_var = 0" ])
0 commit comments