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

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

[dotgnu-pnet-commits] pnet ChangeLog codegen/cg_interface.c cscc/csha...


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] pnet ChangeLog codegen/cg_interface.c cscc/csha...
Date: Sun, 08 Feb 2009 18:01:47 +0000

CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    pnet
Changes by:     Klaus Treichel <ktreichel>      09/02/08 18:01:46

Modified files:
        .              : ChangeLog 
        codegen        : cg_interface.c 
        cscc/csharp    : cs_lvalue.tc 

Log message:
        Fix declarations like declaredtype : genericinterface<declaredtype> .

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnet/ChangeLog?cvsroot=dotgnu-pnet&r1=1.3602&r2=1.3603
http://cvs.savannah.gnu.org/viewcvs/pnet/codegen/cg_interface.c?cvsroot=dotgnu-pnet&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/pnet/cscc/csharp/cs_lvalue.tc?cvsroot=dotgnu-pnet&r1=1.70&r2=1.71

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ChangeLog,v
retrieving revision 1.3602
retrieving revision 1.3603
diff -u -b -r1.3602 -r1.3603
--- ChangeLog   1 Feb 2009 15:46:04 -0000       1.3602
+++ ChangeLog   8 Feb 2009 18:01:46 -0000       1.3603
@@ -1,3 +1,12 @@
+2009-02-08  Klaus Treichel  <address@hidden>
+
+       * codegen/cg_interface.c (ImplementsInterface): Instantiate a generic
+       interface prior to checking if all members are implemented.
+
+       * cscc/csharp/cs_lvalue.tc
+       (ILNode_SemAnalysisType(ILNode_GenericQualIdent)): Return the main type
+       if in type gathering.
+
 2009-02-01  Klaus Treichel  <address@hidden>
 
        * engine/lib_info.c (_IL_InfoMethods_GetPlatformID): Return 4 for Unix

Index: codegen/cg_interface.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/codegen/cg_interface.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- codegen/cg_interface.c      26 Nov 2008 20:15:18 -0000      1.3
+++ codegen/cg_interface.c      8 Feb 2009 18:01:46 -0000       1.4
@@ -114,6 +114,26 @@
        ILMember *member;
        int sawErrors;
 
+#if IL_VERSION_MAJOR > 1
+       if(ILClassNeedsExpansion(interface))
+       {
+               ILType *classType;
+               ILClass *instanceInfo;
+
+               classType = ILClass_SynType(interface);
+               instanceInfo = 
ILClassInstantiate(ILProgramItem_Image(interface),
+                                                                               
  classType, classType, 0);
+               if(!instanceInfo)
+               {
+                       sawErrors = 1;
+               }
+               else
+               {
+                       interface = instanceInfo;
+               }
+       }
+#endif /* IL_VERSION_MAJOR > 1 */
+
        /* Bail out if we've already visited this interface */
        for(posn = 0; posn < *visitedSize; ++posn)
        {

Index: cscc/csharp/cs_lvalue.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_lvalue.tc,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -b -r1.70 -r1.71
--- cscc/csharp/cs_lvalue.tc    30 Dec 2008 14:41:55 -0000      1.70
+++ cscc/csharp/cs_lvalue.tc    8 Feb 2009 18:01:46 -0000       1.71
@@ -1231,6 +1231,20 @@
        }
        info->inSemType = savedState;
        
+       if(info->typeGather)
+       {
+               /* During type gathering only underlying classes are required */
+
+               if((CSSemGetKind(value) == CS_SEMKIND_TYPE) ||
+                  (CSSemGetKind(value) == CS_SEMKIND_TYPE_NODE))
+               {
+                       /* Convert the result into an l-value or r-value and 
return it */
+                       return SemToLRValue((ILNode *)node, info, parent, value,
+                                                               name, 
node->left, &value);
+               }
+               return CSSemValueDefault;
+       }
+
        if(CSSemGetKind(value) == CS_SEMKIND_TYPE)
        {
                ILType *withType;




reply via email to

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