|
@@ -361,6 +361,8 @@ TYPE
|
|
|
|
|
|
IF x.form = SyntaxTree.Static THEN FPNumber(fp,x.staticLength) END;
|
|
|
fingerprint.shallow := fp;
|
|
|
+ fingerprint.public := fingerprint.shallow;
|
|
|
+ fingerprint.private := fingerprint.shallow;
|
|
|
x.SetFingerPrint(fingerprint);
|
|
|
SELF.deep := deep;
|
|
|
END;
|
|
@@ -408,6 +410,8 @@ TYPE
|
|
|
END;
|
|
|
IF x.form = SyntaxTree.Static THEN FPNumber(fp,x.staticLength) END;
|
|
|
fingerprint.shallow := fp;
|
|
|
+ fingerprint.public := fingerprint.shallow;
|
|
|
+ fingerprint.private := fingerprint.shallow;
|
|
|
fingerprint.shallowAvailable := TRUE;
|
|
|
x.SetFingerPrint(fingerprint);
|
|
|
SELF.deep := deep;
|
|
@@ -482,7 +486,7 @@ TYPE
|
|
|
PrivateFP(PointerType) = 0.
|
|
|
*)
|
|
|
PROCEDURE VisitPointerType(x: SyntaxTree.PointerType);
|
|
|
- VAR fingerprint: FingerPrint; fp: LONGINT; deep: BOOLEAN;
|
|
|
+ VAR fingerprint,typeFP: FingerPrint; fp: LONGINT; deep: BOOLEAN;
|
|
|
BEGIN
|
|
|
IF Trace THEN TraceEnter("PointerType"); END;
|
|
|
fingerprint := x.fingerprint;
|
|
@@ -508,8 +512,11 @@ TYPE
|
|
|
fingerprint.deepAvailable := TRUE;
|
|
|
END;
|
|
|
*)
|
|
|
+ x.SetFingerPrint(fingerprint);
|
|
|
SELF.deep := deep;
|
|
|
END;
|
|
|
+
|
|
|
+
|
|
|
IF Trace THEN TraceExit("PointerType",fingerprint) END;
|
|
|
|
|
|
SELF.fingerprint := fingerprint;
|
|
@@ -566,6 +573,8 @@ TYPE
|
|
|
FPString(fp,name);
|
|
|
FPSignature(fp,procedure.type(SyntaxTree.ProcedureType),procedure IS SyntaxTree.Operator );
|
|
|
fingerprint.shallow := fp;
|
|
|
+ fingerprint.public := fingerprint.shallow;
|
|
|
+ fingerprint.private := fingerprint.shallow;
|
|
|
fingerprint.shallowAvailable := TRUE;
|
|
|
procedure.SetFingerPrint(fingerprint)
|
|
|
ELSE
|
|
@@ -654,6 +663,8 @@ TYPE
|
|
|
END;
|
|
|
|
|
|
fingerprint.shallow := fp;
|
|
|
+ fingerprint.public := fingerprint.shallow;
|
|
|
+ fingerprint.private := fingerprint.shallow;
|
|
|
fingerprint.shallowAvailable := TRUE;
|
|
|
|
|
|
x.SetFingerPrint(fingerprint);
|
|
@@ -721,6 +732,8 @@ TYPE
|
|
|
END;
|
|
|
variable := variable.nextVariable;
|
|
|
END;
|
|
|
+ FPNumber(fingerprint.private, SHORT(x.sizeInBits DIV 8));
|
|
|
+ FPNumber(fingerprint.public, SHORT(x.sizeInBits DIV 8));
|
|
|
|
|
|
flags := {};
|
|
|
IF x.recordScope.bodyProcedure # NIL THEN
|
|
@@ -966,6 +979,7 @@ TYPE
|
|
|
PROCEDURE VisitTypeDeclaration(x: SyntaxTree.TypeDeclaration);
|
|
|
VAR fp: LONGINT;
|
|
|
fingerprint: FingerPrint; deep: BOOLEAN;
|
|
|
+ typeFP: FingerPrint;
|
|
|
BEGIN
|
|
|
fingerprint := x.fingerprint;
|
|
|
|
|
@@ -978,15 +992,29 @@ TYPE
|
|
|
FPName(fp,x.name);
|
|
|
IF Trace THEN TraceIndent; D.String("access="); D.Set(x.access); D.Ln; END;
|
|
|
FPVisibility(fp, x.access);
|
|
|
-
|
|
|
x.declaredType.Accept(SELF);
|
|
|
FPNumber(fp, SELF.fingerprint.shallow);
|
|
|
fingerprint.shallow := fp;
|
|
|
+ fingerprint.public := fp;
|
|
|
+ fingerprint.private := fp;
|
|
|
fingerprint.shallowAvailable := TRUE;
|
|
|
x.SetFingerPrint(fingerprint);
|
|
|
SELF.deep := deep;
|
|
|
IF Trace THEN TraceExit("TypeDeclaration",fingerprint) END;
|
|
|
END;
|
|
|
+
|
|
|
+ IF deep & ~fingerprint.deepAvailable THEN
|
|
|
+ fingerprint := x.fingerprint;
|
|
|
+ typeFP := TypeFP(x.declaredType);
|
|
|
+ IF x.declaredType.resolved IS SyntaxTree.PointerType THEN
|
|
|
+ typeFP := TypeFP(x.declaredType.resolved(SyntaxTree.PointerType).pointerBase);
|
|
|
+ END;
|
|
|
+ FPNumber(fingerprint.public, typeFP.public);
|
|
|
+ FPNumber(fingerprint.private, typeFP.private);
|
|
|
+ fingerprint.deepAvailable := TRUE;
|
|
|
+ x.SetFingerPrint(fingerprint);
|
|
|
+ END;
|
|
|
+
|
|
|
SELF.fingerprint := fingerprint
|
|
|
END VisitTypeDeclaration;
|
|
|
|
|
@@ -1014,6 +1042,8 @@ TYPE
|
|
|
FPNumber(fp, fpTypeBasic);
|
|
|
FPValue(fp, x.value);
|
|
|
fingerprint.shallow := fp;
|
|
|
+ fingerprint.public := fingerprint.shallow;
|
|
|
+ fingerprint.private := fingerprint.shallow;
|
|
|
fingerprint.shallowAvailable := TRUE;
|
|
|
x.SetFingerPrint(fingerprint);
|
|
|
SELF.deep := deep;
|
|
@@ -1040,6 +1070,8 @@ TYPE
|
|
|
x.type.Accept(SELF);
|
|
|
FPNumber(fp,SELF.fingerprint.shallow);
|
|
|
fingerprint.shallow := fp;
|
|
|
+ fingerprint.public := fingerprint.shallow;
|
|
|
+ fingerprint.private := fingerprint.shallow;
|
|
|
fingerprint.shallowAvailable := TRUE;
|
|
|
x.SetFingerPrint(fingerprint);
|
|
|
SELF.deep := deep;
|
|
@@ -1072,6 +1104,8 @@ TYPE
|
|
|
x.type.Accept(SELF);
|
|
|
FPNumber(fp,SELF.fingerprint.shallow);
|
|
|
fingerprint.shallow := fp;
|
|
|
+ fingerprint.public := fingerprint.shallow;
|
|
|
+ fingerprint.private := fingerprint.shallow;
|
|
|
fingerprint.shallowAvailable := TRUE;
|
|
|
x.SetFingerPrint(fingerprint);
|
|
|
SELF.deep := deep;
|
|
@@ -1124,6 +1158,8 @@ TYPE
|
|
|
FPSignature(fp,x.type(SyntaxTree.ProcedureType),x IS SyntaxTree.Operator);
|
|
|
END;
|
|
|
fingerprint.shallow := fp;
|
|
|
+ fingerprint.public := fingerprint.shallow;
|
|
|
+ fingerprint.private := fingerprint.shallow;
|
|
|
fingerprint.shallowAvailable := TRUE;
|
|
|
x.SetFingerPrint(fingerprint);
|
|
|
SELF.deep := deep;
|
|
@@ -1156,6 +1192,8 @@ TYPE
|
|
|
IF Trace THEN TraceIndent; D.Str("Module Name ");D.Hex(fp,-8); D.Ln; END;
|
|
|
|
|
|
fingerprint.shallow := fp;
|
|
|
+ fingerprint.public := fingerprint.shallow;
|
|
|
+ fingerprint.private := fingerprint.shallow;
|
|
|
fingerprint.shallowAvailable := TRUE;
|
|
|
x.SetFingerPrint(fingerprint);
|
|
|
SELF.deep := deep;
|
|
@@ -1199,6 +1237,8 @@ TYPE
|
|
|
PROCEDURE VisitSymbol(x: SyntaxTree.Symbol);
|
|
|
BEGIN
|
|
|
fingerprint.shallow := 0;
|
|
|
+ fingerprint.public := fingerprint.shallow;
|
|
|
+ fingerprint.private := fingerprint.shallow;
|
|
|
fingerprint.shallowAvailable := TRUE;
|
|
|
x.SetFingerPrint(fingerprint);
|
|
|
END VisitSymbol;
|