Browse Source

Fix errors for JVM version with use of procedure types and values as parameters.
Version 1.4.0 candidate.

k_john_gough_cp 12 years ago
parent
commit
696b6f6c7a
4 changed files with 13 additions and 4 deletions
  1. 1 1
      gpcp/ExprDesc.cp
  2. 2 1
      gpcp/GPCPcopyright.cp
  3. 7 2
      gpcp/JavaMaker.cp
  4. 3 0
      gpcp/JavaUtil.cp

+ 1 - 1
gpcp/ExprDesc.cp

@@ -2813,7 +2813,7 @@ MODULE ExprDesc;
 
         IF frmTyp IS T.Procedure THEN
           formal.IdError(301);
-          IF G.targetIsJVM() THEN formal.IdError(213);
+          IF G.targetIsJVM() THEN formal.IdError(320);
           ELSIF (frmTyp # actTyp) &
              ~actual.isProcLit() THEN formal.IdError(191) END;
         END;

+ 2 - 1
gpcp/GPCPcopyright.cp

@@ -48,7 +48,8 @@ MODULE GPCPcopyright;
      (* VERSION    = "1.3.14 of 05 September 2012"; *)
      (* VERSION    = "1.3.15 of 04 October 2012"; *)
      (* VERSION    = "1.3.16 of 01 January 2013"; *)
-        VERSION    = "1.3.17 of 01 June 2013"; 
+     (* VERSION    = "1.3.17 of 01 June 2013"; *)
+        VERSION    = "1.4.00 of 26 August 2013"; 
 	verStr*    = " version " + VERSION;
 
   CONST	prefix     = "#gpcp: ";

+ 7 - 2
gpcp/JavaMaker.cp

@@ -2390,8 +2390,13 @@ MODULE JavaMaker;
 		    IF mthI.type.xName = NIL THEN Ju.MkCallAttr(mthI, mthI.type(Ty.Procedure)) END;
 		END;
       | expr : Xp.IdentX DO (* selct *)
-          mthI := expr.ident(Id.MthId);
-          IF pTyp.xName = NIL THEN Ju.MkCallAttr(mthI, pTyp) END;
+	    idnt := expr.ident;
+		WITH idnt : Id.MthId DO
+            IF pTyp.xName = NIL THEN Ju.MkCallAttr(idnt, pTyp) END;
+		| idnt : Id.FldId DO
+		    mthI := Ju.getProcVarInvoke(pTyp);
+			IF mthI.type.xName = NIL THEN Ju.MkCallAttr(mthI, mthI.type(Ty.Procedure)) END;
+		END;
       END;
     END CheckCall;
  (* ---------------------------------------------------- *)

+ 3 - 0
gpcp/JavaUtil.cp

@@ -997,6 +997,9 @@ MODULE JavaUtil;
       | typ : Ty.Opaque DO
 	  IF typ.xName = NIL THEN MkAliasName(typ) END;
 	  L.AppendCharOpen(lst, typ.scopeNm);
+	  | typ : Ty.Procedure DO
+	  IF typ.xName = NIL THEN MkProcTypeName(typ) END;
+	  L.AppendCharOpen(lst, typ.hostClass.scopeNm);
       END;
     END AppendTypeName;
    (* ----------------------------------------- *)