File tree 2 files changed +52
-5
lines changed
2 files changed +52
-5
lines changed Original file line number Diff line number Diff line change @@ -2208,11 +2208,21 @@ def parse_method_type(self, stack):
2208
2208
else :
2209
2209
assert 0
2210
2210
2211
- if len (stack ) > 3 and stack [- 1 ] == ";" and stack [- 3 ] == "=" :
2212
- if stack [- 2 ] == "0" :
2213
- info ["pure_virtual" ] = True
2214
- elif stack [- 2 ] == "delete" :
2215
- info ["deleted" ] = True
2211
+ refqual = ""
2212
+ if len (stack ) > 3 :
2213
+ if stack [- 1 ] == ";" and stack [- 3 ] == "=" :
2214
+ if stack [- 2 ] == "0" :
2215
+ info ["pure_virtual" ] = True
2216
+ elif stack [- 2 ] == "delete" :
2217
+ info ["deleted" ] = True
2218
+
2219
+ for e in reversed (stack ):
2220
+ if e == ")" :
2221
+ break
2222
+ elif e == "&" :
2223
+ refqual += "&"
2224
+
2225
+ info ["ref_qualifiers" ] = refqual
2216
2226
2217
2227
r = header .split ()
2218
2228
name = None
Original file line number Diff line number Diff line change @@ -4146,5 +4146,42 @@ def test_fn(self):
4146
4146
self .assertEqual (tt ["template" ], "template<typename T>" )
4147
4147
4148
4148
4149
+ class RefQualifierTest (unittest .TestCase ):
4150
+ def setUp (self ):
4151
+ self .cppHeader = CppHeaderParser .CppHeader (
4152
+ """
4153
+ struct X {
4154
+ void fn0();
4155
+ void fn1() &;
4156
+ void fn2() &&;
4157
+ void fn3() && = 0;
4158
+ };
4159
+
4160
+ """ ,
4161
+ "string" ,
4162
+ )
4163
+
4164
+ def test_fn0 (self ):
4165
+ fn = self .cppHeader .classes ["X" ]["methods" ]["public" ][0 ]
4166
+ self .assertEqual (fn ["name" ], "fn0" )
4167
+ self .assertEqual (fn ["ref_qualifiers" ], "" )
4168
+
4169
+ def test_fn1 (self ):
4170
+ fn = self .cppHeader .classes ["X" ]["methods" ]["public" ][1 ]
4171
+ self .assertEqual (fn ["name" ], "fn1" )
4172
+ self .assertEqual (fn ["ref_qualifiers" ], "&" )
4173
+
4174
+ def test_fn1 (self ):
4175
+ fn = self .cppHeader .classes ["X" ]["methods" ]["public" ][2 ]
4176
+ self .assertEqual (fn ["name" ], "fn2" )
4177
+ self .assertEqual (fn ["ref_qualifiers" ], "&&" )
4178
+
4179
+ def test_fn3 (self ):
4180
+ fn = self .cppHeader .classes ["X" ]["methods" ]["public" ][3 ]
4181
+ self .assertEqual (fn ["name" ], "fn3" )
4182
+ self .assertEqual (fn ["ref_qualifiers" ], "&&" )
4183
+ self .assertEqual (fn ["pure_virtual" ], True )
4184
+
4185
+
4149
4186
if __name__ == "__main__" :
4150
4187
unittest .main ()
You can’t perform that action at this time.
0 commit comments