File tree Expand file tree Collapse file tree 2 files changed +12
-10
lines changed Expand file tree Collapse file tree 2 files changed +12
-10
lines changed Original file line number Diff line number Diff line change @@ -66,7 +66,7 @@ Bugs fixed
66
66
transforming.
67
67
* C++, fix parsing of 'signed char' and 'unsigned char' as types.
68
68
* C++, add missing support for 'friend' functions.
69
- * C++, add support for virtual bases.
69
+ * C++, add support for virtual bases (thanks to Rapptz) .
70
70
71
71
Documentation
72
72
-------------
Original file line number Diff line number Diff line change 209
209
210
210
class_object:
211
211
goal: a class declaration, but with specification of a base class
212
- TODO: what about templates? for now: skip
213
212
grammar:
214
213
nested-name
215
- | nested-name ":"
216
- 'comma-separated list of nested-name optionally with visibility'
214
+ | nested-name ":" base-specifier-list
215
+ base-specifier-list ->
216
+ base-specifier
217
+ | base-specifier-list, base-specifier
218
+ base-specifier ->
219
+ base-type-specifier
220
+ | "virtual" access-spe"cifier[opt] base-type-specifier
221
+ | access-specifier[opt] "virtual"[opt] base-type-specifier
217
222
Can start with a templateDeclPrefix.
218
223
219
224
enum_object:
@@ -3011,17 +3016,14 @@ def _parse_class(self):
3011
3016
if self .skip_string (':' ):
3012
3017
while 1 :
3013
3018
self .skip_ws ()
3019
+ visibility = 'private'
3014
3020
virtual = False
3015
- if self .skip_string ('virtual' ):
3021
+ if self .skip_word_and_ws ('virtual' ):
3016
3022
virtual = True
3017
- self .skip_ws ()
3018
- visibility = 'private'
3019
3023
if self .match (_visibility_re ):
3020
3024
visibility = self .matched_text
3021
3025
self .skip_ws ()
3022
- if self .skip_string ('virtual' ):
3023
- if virtual :
3024
- self .fail ('Duplicate virtual keyword found' )
3026
+ if not virtual and self .skip_word_and_ws ('virtual' ):
3025
3027
virtual = True
3026
3028
baseName = self ._parse_nested_name ()
3027
3029
bases .append (ASTBaseClass (baseName , visibility , virtual ))
You can’t perform that action at this time.
0 commit comments