Przeglądaj źródła

untraced on pointer type

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7203 8c9fc860-2736-0410-a75d-ab315db34111
felixf 8 lat temu
rodzic
commit
a944167a30

+ 1 - 0
source/FoxPrintout.Mod

@@ -258,6 +258,7 @@ TYPE
 		BEGIN
 			first := TRUE;
 			IF x.isUnsafe THEN Flag(Global.NameUnsafe,first) END;
+			IF x.isUntraced THEN Flag(Global.NameUntraced,first) END;
 			IF x.isRealtime THEN Flag(Global.NameRealtime,first) END;
 			IF x.isDisposable THEN Flag(Global.NameDisposable,first) END;
 			IF x.isPlain THEN Flag(Global.NamePlain,first) END;

+ 1 - 0
source/FoxSemanticChecker.Mod

@@ -725,6 +725,7 @@ TYPE
 				x.SetPlain(HasFlag(modifiers,Global.NamePlain,position));
 				x.SetDisposable(HasFlag(modifiers,Global.NameDisposable, position));
 				x.SetUnsafe(HasFlag(modifiers,Global.NameUnsafe,position));
+				x.SetUntraced(HasFlag(modifiers,Global.NameUntraced,position));
 				(* inheritance cycle check
 					example:
 					A=POINTER TO RECORD(B) END;

+ 8 - 1
source/FoxSyntaxTree.Mod

@@ -1299,6 +1299,7 @@ TYPE
 			pointerBase-: Type;
 			isPlain-: BOOLEAN;
 			isUnsafe-: BOOLEAN;
+			isUntraced-: BOOLEAN;
 			isDisposable-: BOOLEAN;
 			isHidden-: BOOLEAN;
 
@@ -1313,6 +1314,7 @@ TYPE
 			SELF.scope := scope;
 			hasPointers := TRUE;
 			isHidden := FALSE;
+			isUntraced := FALSE;
 		END InitPointerType;
 
 		PROCEDURE SetHidden*(hidden: BOOLEAN);
@@ -1338,6 +1340,11 @@ TYPE
 		BEGIN
 			isUnsafe := unsafe;
 		END SetUnsafe;
+		
+		PROCEDURE SetUntraced*(untraced: BOOLEAN);
+		BEGIN
+			isUntraced := untraced;
+		END SetUntraced;
 
 		PROCEDURE SetDisposable*(disposable: BOOLEAN);
 		BEGIN
@@ -1377,7 +1384,7 @@ TYPE
 		END IsPointer;
 		
 		PROCEDURE NeedsTrace*(): BOOLEAN;
-		BEGIN RETURN ~isUnsafe;
+		BEGIN RETURN ~isUnsafe & ~isUntraced;
 		END NeedsTrace;
 
 		PROCEDURE Accept*(v: Visitor);