@@ -101,6 +101,10 @@ typedef enum {
101101	PYTHON_UNKNOWN_INDIRECTLY_IMPORTED ,
102102} pythonUnknownRole ;
103103
104+ typedef  enum  {
105+ 	PYTHON_CLASS_SUPERCLASS ,
106+ } pythonClassRole ;
107+ 
104108/* Roles related to `import' 
105109 * ========================== 
106110 * import X              X = (kind:module, role:imported) 
@@ -135,8 +139,13 @@ static roleDefinition PythonUnknownRoles [] = {
135139	  "classes/variables/functions/modules imported in alternative name"  },
136140};
137141
142+ static  roleDefinition  PythonClassRoles  [] =  {
143+ 	{ true, "super" , "super class"  },
144+ };
145+ 
138146static  kindDefinition  PythonKinds [COUNT_KIND ] =  {
139- 	{true, 'c' , "class" ,    "classes" },
147+ 	{true, 'c' , "class" ,    "classes" ,
148+ 	 .referenceOnly  =  false, ATTACH_ROLES (PythonClassRoles ) },
140149	{true, 'f' , "function" , "functions" },
141150	{true, 'm' , "member" ,   "class members" },
142151	{true, 'v' , "variable" , "variables" },
@@ -1042,13 +1051,41 @@ static void deleteTypedParam (struct typedParam *p)
10421051static  void  parseInheritanceList  (tokenInfo  * const  token ,
10431052								  vString  * const  inneritanceList )
10441053{
1054+ 	tokenInfo  * lastToken  =  newToken  ();
1055+ 
10451056	do 
10461057	{
1058+ 		copyToken  (lastToken , token );
10471059		readTokenFull  (token , true);
1060+ 		if  (lastToken -> type  ==  TOKEN_IDENTIFIER 
1061+ 			&&  (token -> type  ==  ','  ||  token -> type  ==  ')' ))
1062+ 		{
1063+ 			if  (lastToken -> reftag  ==  CORK_NIL )
1064+ 			{
1065+ 				tagEntryInfo  e ;
1066+ 				initRefTagEntry (& e , vStringValue  (lastToken -> string ),
1067+ 								K_CLASS , PYTHON_CLASS_SUPERCLASS );
1068+ 				e .lineNumber 	=  lastToken -> lineNumber ;
1069+ 				e .filePosition 	=  lastToken -> filePosition ;
1070+ 				lastToken -> reftag  =  makeTagEntry  (& e );
1071+ 			}
1072+ 			else 
1073+ 			{
1074+ 				tagEntryInfo  * e  =  getEntryInCorkQueue  (lastToken -> reftag );
1075+ 				if  (e )
1076+ 				{
1077+ 					clearRoles (e );
1078+ 					e -> kindIndex  =  K_CLASS ;
1079+ 					assignRole (e , PYTHON_CLASS_SUPERCLASS );
1080+ 				}
1081+ 			}
1082+ 		}
10481083		if  (token -> type  !=  ')' )
10491084			reprCat  (inneritanceList , token );
10501085	}
10511086	while  (token -> type  !=  TOKEN_EOF  &&  token -> type  !=  ')' );
1087+ 
1088+ 	deleteToken  (lastToken );
10521089}
10531090
10541091static  void  parseArglist  (tokenInfo  * const  token ,
0 commit comments