From 83f4ce2d5f6a7452ace1b80658f87de277ac135e Mon Sep 17 00:00:00 2001 From: paulklint Date: Sun, 8 Feb 2026 16:40:45 +0100 Subject: [PATCH 1/5] Less physical to logical conversions --- src/analysis/typepal/Collector.rsc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/analysis/typepal/Collector.rsc b/src/analysis/typepal/Collector.rsc index 6861ec8..dc7dda2 100644 --- a/src/analysis/typepal/Collector.rsc +++ b/src/analysis/typepal/Collector.rsc @@ -385,9 +385,9 @@ Collector newCollector(str modelName, map[str,Tree] namedTrees, TypePalConfig co void collector_useViaType(Tree container, Tree selector, set[IdRole] idRolesSel){ if(building){ name = normalizeName(""); - selectorLoc = getLogicalLoc(selector); - containerLoc = getLogicalLoc(container); - calculators += calc("useViaType `` in ", selectorLoc, [containerLoc], makeGetTypeInType(containerLoc, selector, idRolesSel, toLogicalLocs(currentScope))); + selectorLoc = getLoc(selector); + containerLoc = getLoc(container); + calculators += calc("useViaType `` in ", selectorLoc, [containerLoc], makeGetTypeInType(containerLoc, selector, idRolesSel, currentScope)); } else { throw TypePalUsage("Cannot call `useViaType` on Collector after `run`"); } From a82624d64c74a5fdb94747c2742b1d77f6752aba Mon Sep 17 00:00:00 2001 From: paulklint Date: Sun, 8 Feb 2026 20:33:39 +0100 Subject: [PATCH 2/5] Further tweaking --- src/analysis/typepal/Solver.rsc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/analysis/typepal/Solver.rsc b/src/analysis/typepal/Solver.rsc index 4aefd41..26f390c 100644 --- a/src/analysis/typepal/Solver.rsc +++ b/src/analysis/typepal/Solver.rsc @@ -667,9 +667,10 @@ Solver newSolver(map[str,Tree] namedTrees, TModel tm){ } AType solver_getTypeInType(AType containerType, Tree selector, set[IdRole] idRolesSel, loc scope){ - selectorLoc = getLogicalLoc(getLoc(selector)); + selectorLoc = getLogicalLoc(selector); selectorOrgName = ""; selectorName = normalizeName(selectorOrgName); + scope = getLogicalLoc(scope); selectorUse = use(selectorName, selectorOrgName, selectorLoc, scope, idRolesSel); if(overloadedAType(rel[loc, IdRole, AType] overloads) := containerType){ From 471be38a6ac691a940fa65d2cd8b564ae0cb59cd Mon Sep 17 00:00:00 2001 From: paulklint Date: Mon, 9 Feb 2026 15:08:07 +0100 Subject: [PATCH 3/5] Bumped to rascal 0.41.3-RC8 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3960d02..f90ca7d 100644 --- a/pom.xml +++ b/pom.xml @@ -183,7 +183,7 @@ org.rascalmpl rascal - 0.41.2 + 0.41.3-RC8 provided From 6b6bd4d8e1a09ccd603578698a228d5af84ca55f Mon Sep 17 00:00:00 2001 From: paulklint Date: Mon, 9 Feb 2026 15:09:07 +0100 Subject: [PATCH 4/5] Defend against uninstantiated types --- src/analysis/typepal/Solver.rsc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/analysis/typepal/Solver.rsc b/src/analysis/typepal/Solver.rsc index 26f390c..e0c81ce 100644 --- a/src/analysis/typepal/Solver.rsc +++ b/src/analysis/typepal/Solver.rsc @@ -667,6 +667,9 @@ Solver newSolver(map[str,Tree] namedTrees, TModel tm){ } AType solver_getTypeInType(AType containerType, Tree selector, set[IdRole] idRolesSel, loc scope){ + if(!solver_isFullyInstantiated(containerType)){ + throw TypeUnavailable(); + } selectorLoc = getLogicalLoc(selector); selectorOrgName = ""; selectorName = normalizeName(selectorOrgName); From c4c5c9a4f9e47c3bdcc07f187afec81d8761337f Mon Sep 17 00:00:00 2001 From: paulklint Date: Tue, 10 Feb 2026 14:09:57 +0100 Subject: [PATCH 5/5] Dependency back to rascal 0.41.2 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f90ca7d..3960d02 100644 --- a/pom.xml +++ b/pom.xml @@ -183,7 +183,7 @@ org.rascalmpl rascal - 0.41.3-RC8 + 0.41.2 provided