[Top][All Lists]
[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,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_gather.c,1.44,1.45,
Rhys Weatherley <address@hidden> <=
- Prev by Date:
[Dotgnu-pnet-commits] CVS: pnet ChangeLog,1.2573,1.2574
- Next by Date:
[Dotgnu-pnet-commits] CVS: pnetlib/System.Drawing.Postscript PostscriptGraphics.cs, 1.1, 1.2 PostscriptPrintSession.cs, 1.1, 1.2
- Previous by thread:
[Dotgnu-pnet-commits] CVS: pnet ChangeLog,1.2573,1.2574
- Next by thread:
[Dotgnu-pnet-commits] CVS: pnetlib/System.Drawing.Postscript PostscriptGraphics.cs, 1.1, 1.2 PostscriptPrintSession.cs, 1.1, 1.2
- Index(es):