File tree Expand file tree Collapse file tree 2 files changed +52
-5
lines changed
Expand file tree Collapse file tree 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):
22082208 else :
22092209 assert 0
22102210
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
22162226
22172227 r = header .split ()
22182228 name = None
Original file line number Diff line number Diff line change @@ -4146,5 +4146,42 @@ def test_fn(self):
41464146 self .assertEqual (tt ["template" ], "template<typename T>" )
41474147
41484148
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+
41494186if __name__ == "__main__" :
41504187 unittest .main ()
You can’t perform that action at this time.
0 commit comments