[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_stmt.tc,1.33,1.34
From: |
Gopal.V <address@hidden> |
Subject: |
[Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_stmt.tc,1.33,1.34 |
Date: |
Sat, 31 May 2003 01:47:26 -0400 |
Update of /cvsroot/dotgnu-pnet/pnet/cscc/csharp
In directory subversions:/tmp/cvs-serv29717/cscc/csharp
Modified Files:
cs_stmt.tc
Log Message:
Improve enumerator detection code
Index: cs_stmt.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_stmt.tc,v
retrieving revision 1.33
retrieving revision 1.34
diff -C2 -r1.33 -r1.34
*** cs_stmt.tc 24 May 2003 07:52:47 -0000 1.33
--- cs_stmt.tc 31 May 2003 05:47:24 -0000 1.34
***************
*** 259,268 ****
ILNode_MethodDeclaration *method;
ILType *type;
! //ForeachCollection
ILMethod *getEnumerator=NULL;
ILProperty *property=NULL;
ILMethod *getCurrent=NULL;
ILMethod *moveNext=NULL;
- ILType * const args[1]={ILType_Void};
ILType *retType;
ILType *enumerator;
--- 259,267 ----
ILNode_MethodDeclaration *method;
ILType *type;
! /* ForeachCollection */
ILMethod *getEnumerator=NULL;
ILProperty *property=NULL;
ILMethod *getCurrent=NULL;
ILMethod *moveNext=NULL;
ILType *retType;
ILType *enumerator;
***************
*** 362,382 ****
GetDefaultScope(info),
"GetEnumerator",
!
(ILType**)args, 0);
}
! else if(ILTypeImplements(info, node->arrayType,
!
ILFindNonSystemType(info,"IEnumerable","System.Collections")))
! {
! getEnumerator = ILResolveInstanceMethod(info,
arrayClass,
GetDefaultScope(info),
!
"IEnumerable.GetEnumerator",
!
(ILType**)args, 0);
}
- else
- {
- CCErrorOnLine(yygetfilename(node), yygetlinenum(node),
- "'%s' does not have a 'GetEnumerator' or
'IEnumerable.GetEnumerator'"
- ,CSTypeToName(node->arrayType));
- getEnumerator = 0;
- }
if(getEnumerator)
{
--- 361,380 ----
GetDefaultScope(info),
"GetEnumerator",
!
NULL, 0);
}
! if(getEnumerator==NULL &&
! ILTypeImplements(info, node->arrayType,
!
ILFindNonSystemType(info,"IEnumerable","System.Collections")))
! {
! ILClass * enumerable = ILTypeToClass(info,
!
ILFindNonSystemType(info,"IEnumerable",
!
"System.Collections"));
! enumerable = ILClassResolve(enumerable);
!
! getEnumerator = ILResolveInstanceMethod(info,
enumerable,
GetDefaultScope(info),
!
"GetEnumerator",
!
NULL, 0);
}
if(getEnumerator)
{
***************
*** 386,418 ****
GetDefaultScope(info),
"Current");
- if(!property)
- {
- property=ILResolveProperty(info,
-
ILType_ToClass(enumerator),
- GetDefaultScope(info),
- "IEnumerator.Current");
- }
getCurrent=(property ? ILProperty_Getter(property) : 0);
moveNext=ILResolveInstanceMethod(info,
ILType_ToClass(enumerator),
GetDefaultScope(info),
! "MoveNext",
! (ILType**)args,
! 0);
! if(!moveNext)
! {
! moveNext=ILResolveInstanceMethod(info,
! ILType_ToClass(enumerator),
! GetDefaultScope(info),
! "IEnumerator.MoveNext",
! (ILType**)args,
! 0);
! }
if(!property)
{
CCErrorOnLine(yygetfilename(node),
yygetlinenum(node),
! "Cannot locate 'Current' or 'IEnumerator.Current' property in
'%s'",
! CSTypeToName(enumerator));
}
else if(!getCurrent)
--- 384,400 ----
GetDefaultScope(info),
"Current");
getCurrent=(property ? ILProperty_Getter(property) : 0);
+
moveNext=ILResolveInstanceMethod(info,
ILType_ToClass(enumerator),
GetDefaultScope(info),
! "MoveNext", NULL, 0);
!
if(!property)
{
CCErrorOnLine(yygetfilename(node),
yygetlinenum(node),
! "Could not locate 'Current' or
'IEnumerator.Current'"
! "property in '%s'",
CSTypeToName(enumerator));
}
else if(!getCurrent)
***************
*** 471,474 ****
--- 453,463 ----
getCurrent);
}
+ }
+ else
+ {
+ CCErrorOnLine(yygetfilename(node), yygetlinenum(node),
+ "Could not locate a 'GetEnumerator' or "
+ "'IEnumerable.GetEnumerator' in '%s'"
+ ,CSTypeToName(node->arrayType));
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_stmt.tc,1.33,1.34,
Gopal.V <address@hidden> <=
- Prev by Date:
[Dotgnu-pnet-commits] CVS: ml-pnet ChangeLog,1.5,1.6 configure.in,1.5,1.6 Makefile.am,1.1.1.1,1.2
- Next by Date:
[Dotgnu-pnet-commits] CVS: pnetlib/I18N/Common Manager.cs,1.10,1.11
- Previous by thread:
[Dotgnu-pnet-commits] CVS: ml-pnet ChangeLog,1.5,1.6 configure.in,1.5,1.6 Makefile.am,1.1.1.1,1.2
- Next by thread:
[Dotgnu-pnet-commits] CVS: pnetlib/I18N/Common Manager.cs,1.10,1.11
- Index(es):