From 33836c95186fed836afa7ae3df83a835d73233fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Almeida?= Date: Tue, 22 Apr 2025 14:00:23 +0100 Subject: [PATCH 1/2] Changed how class types are registered to be coherent --- latte/src/main/java/typechecking/LatteClassFirstPass.java | 4 ++-- latte/src/main/java/typechecking/LatteTypeChecker.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/latte/src/main/java/typechecking/LatteClassFirstPass.java b/latte/src/main/java/typechecking/LatteClassFirstPass.java index a437063..a0badc0 100644 --- a/latte/src/main/java/typechecking/LatteClassFirstPass.java +++ b/latte/src/main/java/typechecking/LatteClassFirstPass.java @@ -24,8 +24,8 @@ public LatteClassFirstPass(SymbolicEnvironment se, PermissionEnvironment pe, public void visitCtClass(CtClass ctClass) { logInfo("Visiting class: " + ctClass.getSimpleName()); // Add the class to the type reference and class map - CtTypeReference typeRef = ctClass.getReference(); - maps.addTypeClass(typeRef, ctClass); + CtTypeReference typeRef1 = ctClass.getReference(); + maps.addTypeClass(typeRef1, ctClass); super.visitCtClass(ctClass); } diff --git a/latte/src/main/java/typechecking/LatteTypeChecker.java b/latte/src/main/java/typechecking/LatteTypeChecker.java index 3bc1005..96bfe01 100644 --- a/latte/src/main/java/typechecking/LatteTypeChecker.java +++ b/latte/src/main/java/typechecking/LatteTypeChecker.java @@ -191,7 +191,7 @@ public void visitCtInvocation(CtInvocation invocation) { if (invocation.getTarget() == null){ logError("Invocation needs to have a target but found none -", invocation); } - CtTypeReference e = invocation.getTarget().getType(); + CtTypeReference e = invocation.getTarget().getType().getTypeErasure(); // method(Ξ“(π‘₯), 𝑓 ) = 𝛼 𝐢 π‘š(𝛼0 𝐢0 this, 𝛼1 𝐢1 π‘₯1, Β· Β· Β· , 𝛼𝑛 𝐢𝑛 π‘₯𝑛 ) CtClass klass = maps.getClassFrom(e); @@ -199,7 +199,7 @@ public void visitCtInvocation(CtInvocation invocation) { invocation.getArguments().size()); if (m == null){ - logInfo(String.format("Cannot find method {} for {} in the context", metName, invocation.getType())); + logInfo("Cannot find method {"+ metName +"} for class {"+ klass.getSimpleName() +"} with {"+ paramSize +"} in the context"); return; } List paramSymbValues = new ArrayList<>(); From 1b40e3100a323358ae2393f1f8889140f3d083b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Almeida?= Date: Tue, 22 Apr 2025 14:04:44 +0100 Subject: [PATCH 2/2] minor fix to error debug --- latte/src/main/java/typechecking/LatteTypeChecker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/latte/src/main/java/typechecking/LatteTypeChecker.java b/latte/src/main/java/typechecking/LatteTypeChecker.java index 96bfe01..16c816e 100644 --- a/latte/src/main/java/typechecking/LatteTypeChecker.java +++ b/latte/src/main/java/typechecking/LatteTypeChecker.java @@ -199,7 +199,7 @@ public void visitCtInvocation(CtInvocation invocation) { invocation.getArguments().size()); if (m == null){ - logInfo("Cannot find method {"+ metName +"} for class {"+ klass.getSimpleName() +"} with {"+ paramSize +"} in the context"); + logInfo("Cannot find method {" + metName + "} for {} in the context"); return; } List paramSymbValues = new ArrayList<>();