Browse Source

Slightly better diagnostics

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7162 8c9fc860-2736-0410-a75d-ab315db34111
felixf 8 years ago
parent
commit
c6fbbcb44b
3 changed files with 12 additions and 4 deletions
  1. 2 0
      source/Debugging.Mod
  2. 6 0
      source/FoxIntermediateBackend.Mod
  3. 4 4
      source/Generic.Reflection.Mod

+ 2 - 0
source/Debugging.Mod

@@ -191,11 +191,13 @@ VAR
 	PROCEDURE DisableGC*;
 	BEGIN
 		Heaps.GC := Nothing;
+		TRACE(Heaps.GC, "disabled"); 
 	END DisableGC;
 
 	PROCEDURE EnableGC*;
 	BEGIN
 		Heaps.GC := Heaps.InvokeGC;
+		TRACE(Heaps.GC, "enabled"); 
 	END EnableGC;
 
 

+ 6 - 0
source/FoxIntermediateBackend.Mod

@@ -12071,6 +12071,12 @@ TYPE
 						NParameter(parameter, pos);
 						parameter := parameter.nextParameter;
 					END;
+					IF procedureType.returnParameter # NIL THEN
+						NParameter(procedureType.returnParameter, pos); 
+					END;
+					IF procedureType.selfParameter # NIL THEN
+						NParameter(procedureType.selfParameter, pos); 
+					END;
 					IF RefInfo THEN Info(section, "ReturnType") END;
 					NType(procedureType.returnType);
 

+ 4 - 4
source/Generic.Reflection.Mod

@@ -494,7 +494,7 @@ CONST
 		IF maxLen = 0 THEN w.String("..."); END;
 	END WriteValueString;
 	
-	PROCEDURE WriteMathArray*(w: Streams.Writer; adr: ADDRESS);
+	PROCEDURE WriteMathArray*(w: Streams.Writer; adr: ADDRESS; check: BOOLEAN);
 		TYPE 
 		LenInc = RECORD
 			len: SIZE;
@@ -513,7 +513,7 @@ CONST
 		VAR t: UnsafeArray; i: SIZE;
 	BEGIN
 		IF adr = NIL THEN w.String(" (NIL)"); 
-		ELSIF CheckHeapAddress(adr) THEN
+		ELSIF ~check OR CheckHeapAddress(adr) THEN
 			t := adr;
 			w.String(" len/inc=[ ");
 			IF t.dim < 8 THEN
@@ -591,7 +591,7 @@ CONST
 			| sfTypeMathOpenArray: 
 				w.String("OPEN MATH ARRAY ");
 				SkipType(refs, offset);
-				WriteMathArray(w, adr);
+				WriteMathArray(w, adr, FALSE);
 			| sfTypeMathStaticArray: 
 				w.String("... (MATH STATIC ARRAY)");
 				SkipSize(offset); SkipType(refs, offset);
@@ -599,7 +599,7 @@ CONST
 				w.String("TENSOR ");
 				SYSTEM.GET(adr, a);
 				WriteBasicValue(w, sfTypeANY, adr, size);
-				WriteMathArray(w, a);
+				WriteMathArray(w, a, TRUE);
 				SkipType(refs, offset); 
 			| sfTypeRecord: 
 				w.String("...");