210
210
class_object:
211
211
goal: a class declaration, but with specification of a base class
212
212
grammar:
213
- nested-name
214
- | nested-name ":" base-specifier-list
213
+ nested-name "final"[opt] (":" base-specifier-list)[opt]
215
214
base-specifier-list ->
216
215
base-specifier
217
216
| base-specifier-list, base-specifier
@@ -1878,8 +1877,9 @@ def describe_signature(self, signode, mode, env, symbol):
1878
1877
1879
1878
1880
1879
class ASTClass (ASTBase ):
1881
- def __init__ (self , name , bases ):
1880
+ def __init__ (self , name , final , bases ):
1882
1881
self .name = name
1882
+ self .final = final
1883
1883
self .bases = bases
1884
1884
1885
1885
def get_id_v1 (self , objectType , symbol ):
@@ -1891,6 +1891,8 @@ def get_id_v2(self, objectType, symbol):
1891
1891
def __unicode__ (self ):
1892
1892
res = []
1893
1893
res .append (text_type (self .name ))
1894
+ if self .final :
1895
+ res .append (' final' )
1894
1896
if len (self .bases ) > 0 :
1895
1897
res .append (' : ' )
1896
1898
first = True
@@ -1904,6 +1906,9 @@ def __unicode__(self):
1904
1906
def describe_signature (self , signode , mode , env , symbol ):
1905
1907
_verify_description_mode (mode )
1906
1908
self .name .describe_signature (signode , mode , env , symbol = symbol )
1909
+ if self .final :
1910
+ signode += nodes .Text (' ' )
1911
+ signode += addnodes .desc_annotation ('final' , 'final' )
1907
1912
if len (self .bases ) > 0 :
1908
1913
signode += nodes .Text (' : ' )
1909
1914
for b in self .bases :
@@ -3011,6 +3016,8 @@ def _parse_type_using(self):
3011
3016
3012
3017
def _parse_class (self ):
3013
3018
name = self ._parse_nested_name ()
3019
+ self .skip_ws ()
3020
+ final = self .skip_word_and_ws ('final' )
3014
3021
bases = []
3015
3022
self .skip_ws ()
3016
3023
if self .skip_string (':' ):
@@ -3032,7 +3039,7 @@ def _parse_class(self):
3032
3039
continue
3033
3040
else :
3034
3041
break
3035
- return ASTClass (name , bases )
3042
+ return ASTClass (name , final , bases )
3036
3043
3037
3044
def _parse_enum (self ):
3038
3045
scoped = None # is set by CPPEnumObject
0 commit comments