dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_gather.c,1.44,1.45


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_gather.c,1.44,1.45
Date: Fri, 18 Jul 2003 20:48:42 -0400

Update of /cvsroot/dotgnu-pnet/pnet/cscc/csharp
In directory subversions:/tmp/cvs-serv16553/cscc/csharp

Modified Files:
        cs_gather.c 
Log Message:


Centralize the extraction of method, property, and event names so that
generic references can be handled properly.


Index: cs_gather.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_gather.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -C2 -r1.44 -r1.45
*** cs_gather.c 7 Jul 2003 02:18:04 -0000       1.44
--- cs_gather.c 19 Jul 2003 00:48:37 -0000      1.45
***************
*** 81,84 ****
--- 81,123 ----
  
  /*
+  * Get the full and basic names from a method/property/event name.
+  */
+ static char *GetFullAndBasicNames(ILNode *name, char **basicName)
+ {
+       char *result;
+       char *basic;
+       char *left;
+       if(yyisa(name, ILNode_Identifier))
+       {
+               result = ILQualIdentName(name, 0);
+               basic = result;
+       }
+       else if(yyisa(name, ILNode_GenericReference))
+       {
+               result = ILQualIdentName(((ILNode_GenericReference 
*)name)->type, 0);
+               basic = result;
+       }
+       else if(yyisa(name, ILNode_QualIdent))
+       {
+               left = GetFullAndBasicNames(((ILNode_QualIdent *)name)->left, 
0);
+               result = GetFullAndBasicNames
+                       (((ILNode_QualIdent *)name)->right, &basic);
+               result = ILQualIdentAppend(left, result);
+       }
+       else
+       {
+               /* Shouldn't happen, but do something safe */
+               CCErrorOnLine(yygetfilename(name), yygetlinenum(name),
+                                         _("invalid qualified identifier"));
+               result = basic = "x";
+       }
+       if(basicName)
+       {
+               *basicName = basic;
+       }
+       return result;
+ }
+ 
+ /*
   * Create the program structure for a type and all of its base types.
   * Returns the new end of the top-level type list.
***************
*** 90,94 ****
        const char *name;
        const char *namespace;
-       const char *baseName;
        int numBases;
        ILClass **baseList;
--- 129,132 ----
***************
*** 198,215 ****
                }
  
-               if(yyisa(baseNode,ILNode_Identifier))
-               {
-                       baseName=ILQualIdentName(baseNode,0);
-               }
-               else if(yyisa(baseNode,ILNode_QualIdent))
-               {
-                       
baseName=ILQualIdentName(((ILNode_QualIdent*)baseNode)->right,0);
-               }
-               else
-               {
-                       baseName=0;
-               }
-       
- 
                /* Look in the scope for the base class */
                if(CSSemBaseType(baseNode, info, &baseNode,
--- 236,239 ----
***************
*** 929,944 ****
        interface = 0;
        interfaceMember = 0;
!       if(yykind(method->name) == yykindof(ILNode_Identifier))
        {
                /* Simple method name */
!               name = ILQualIdentName(method->name, 0);
!               basicName = name;
        }
        else
        {
                /* Qualified method name that overrides some interface method */
!               name = ILQualIdentName(method->name, 0);
!               basicName = ILQualIdentName
!                       (((ILNode_QualIdent *)(method->name))->right, 0);
                signature = CSSemType(((ILNode_QualIdent 
*)(method->name))->left, info,
                                                          &(((ILNode_QualIdent 
*)(method->name))->left));
--- 953,966 ----
        interface = 0;
        interfaceMember = 0;
!       if(yykind(method->name) == yykindof(ILNode_Identifier) ||
!          yykind(method->name) == yykindof(ILNode_GenericReference))
        {
                /* Simple method name */
!               name = GetFullAndBasicNames(method->name, &basicName);
        }
        else
        {
                /* Qualified method name that overrides some interface method */
!               name = GetFullAndBasicNames(method->name, &basicName);
                signature = CSSemType(((ILNode_QualIdent 
*)(method->name))->left, info,
                                                          &(((ILNode_QualIdent 
*)(method->name))->left));
***************
*** 1370,1378 ****
  
        /* Get the name of the property */
!       if(yykind(property->name) == yykindof(ILNode_Identifier))
        {
                /* Simple property name */
!               name = ILQualIdentName(property->name, 0);
!               basicName = name;
                interfaceOverride = 0;
        }
--- 1392,1400 ----
  
        /* Get the name of the property */
!       if(yykind(property->name) == yykindof(ILNode_Identifier) ||
!          yykind(property->name) == yykindof(ILNode_GenericReference))
        {
                /* Simple property name */
!               name = GetFullAndBasicNames(property->name, &basicName);
                interfaceOverride = 0;
        }
***************
*** 1380,1386 ****
        {
                /* Qualified property name that overrides some interface 
property */
!               name = ILQualIdentName(property->name, 0);
!               basicName = ILQualIdentName
!                       (((ILNode_QualIdent *)(property->name))->right, 0);
                signature = CSSemType
                                (((ILNode_QualIdent *)(property->name))->left, 
info,
--- 1402,1406 ----
        {
                /* Qualified property name that overrides some interface 
property */
!               name = GetFullAndBasicNames(property->name, &basicName);
                signature = CSSemType
                                (((ILNode_QualIdent *)(property->name))->left, 
info,
***************
*** 1565,1572 ****
        /* Get the name of the event */
        eventName = ((ILNode_FieldDeclarator 
*)(eventDecl->fieldDeclarator))->name;
!       if(yykind(eventName) == yykindof(ILNode_Identifier))
        {
                /* Simple event name */
!               name = ILQualIdentName(eventName, 0);
                interfaceOverride = 0;
        }
--- 1585,1593 ----
        /* Get the name of the event */
        eventName = ((ILNode_FieldDeclarator 
*)(eventDecl->fieldDeclarator))->name;
!       if(yykind(eventName) == yykindof(ILNode_Identifier) ||
!          yykind(eventName) == yykindof(ILNode_GenericReference))
        {
                /* Simple event name */
!               name = GetFullAndBasicNames(eventName, &basicName);
                interfaceOverride = 0;
        }
***************
*** 1574,1580 ****
        {
                /* Qualified event name that overrides some interface event */
!               name = ILQualIdentName(eventName, 0);
!               basicName = ILQualIdentName
!                       (((ILNode_QualIdent *)eventName)->right, 0);
                signature = CSSemType
                                (((ILNode_QualIdent *)eventName)->left, info,
--- 1595,1599 ----
        {
                /* Qualified event name that overrides some interface event */
!               name = GetFullAndBasicNames(eventName, &basicName);
                signature = CSSemType
                                (((ILNode_QualIdent *)eventName)->left, info,





reply via email to

[Prev in Thread] Current Thread [Next in Thread]