Skip to content

Commit 1108762

Browse files
authored
Merge pull request #39 from usethesource/fix/useViaType2
Subtle changes in the staging of arguments of useViaType
2 parents d8dfab7 + 05eaf17 commit 1108762

4 files changed

Lines changed: 13 additions & 8 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@
183183
<dependency>
184184
<groupId>org.rascalmpl</groupId>
185185
<artifactId>rascal</artifactId>
186-
<version>0.41.2</version>
186+
<version>0.42.0-RC2</version>
187187
<scope>provided</scope>
188188
</dependency>
189189
</dependencies>

src/analysis/typepal/Collector.rsc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -376,9 +376,9 @@ Collector newCollector(str modelName, map[str,Tree] namedTrees, TypePalConfig co
376376
}
377377
}
378378

379-
AType(Solver) makeGetTypeInType(loc containerLoc, Tree selector, set[IdRole] idRolesSel, loc scope){
379+
AType(Solver) makeGetTypeInType(Tree container, Tree selector, set[IdRole] idRolesSel, loc scope){
380380
return AType(Solver s) {
381-
return s.getTypeInType(s.getType(containerLoc), selector, idRolesSel, scope);
381+
return s.getTypeInType(container, selector, idRolesSel, scope);
382382
};
383383
}
384384

@@ -387,7 +387,7 @@ Collector newCollector(str modelName, map[str,Tree] namedTrees, TypePalConfig co
387387
name = normalizeName("<selector>");
388388
selectorLoc = getLoc(selector);
389389
containerLoc = getLoc(container);
390-
calculators += calc("useViaType `<name>` in <containerLoc>", selectorLoc, [containerLoc], makeGetTypeInType(containerLoc, selector, idRolesSel, currentScope));
390+
calculators += calc("useViaType `<name>` in <containerLoc>", selectorLoc, [containerLoc], makeGetTypeInType(container, selector, idRolesSel, currentScope));
391391
} else {
392392
throw TypePalUsage("Cannot call `useViaType` on Collector after `run`");
393393
}

src/analysis/typepal/ISolver.rsc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ data Solver
2626
/* Types */ AType(value) getType,
2727
AType (Tree occ, loc scope, set[IdRole] idRoles) getTypeInScope,
2828
AType (str name, loc scope, set[IdRole] idRoles) getTypeInScopeFromName,
29-
AType (AType containerType, Tree selector, set[IdRole] idRolesSel, loc scope) getTypeInType,
29+
AType (Tree container, Tree selector, set[IdRole] idRolesSel, loc scope) getTypeInType,
3030
rel[str id, AType atype] (AType containerType, loc scope, set[IdRole] idRoles) getAllDefinedInType,
3131
/* Fact */ void (value, AType) fact,
3232
void (value, AType) specializedFact,

src/analysis/typepal/Solver.rsc

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,11 @@ Solver newSolver(map[str,Tree] namedTrees, TModel tm){
666666
}
667667
}
668668

669-
AType solver_getTypeInType(AType containerType, Tree selector, set[IdRole] idRolesSel, loc scope){
669+
AType solver_getTypeInType(Tree container, Tree selector, set[IdRole] idRolesSel, loc scope){
670+
return getTypeInType(solver_getType(getLogicalLoc(container)), selector, idRolesSel, scope);
671+
}
672+
673+
AType getTypeInType(AType containerType, Tree selector, set[IdRole] idRolesSel, loc scope){
670674
if(!solver_isFullyInstantiated(containerType)){
671675
throw TypeUnavailable();
672676
}
@@ -680,7 +684,7 @@ Solver newSolver(map[str,Tree] namedTrees, TModel tm){
680684
rel[loc, IdRole, AType] valid_overloads = {};
681685
for(<key, role, tp> <- overloads){
682686
try {
683-
selectorType = solver_getTypeInType(tp, selector, idRolesSel, scope);
687+
selectorType = getTypeInType(tp, selector, idRolesSel, scope);
684688
valid_overloads += <key, role, selectorType>;
685689
} catch checkFailed(list[FailMessage] _): ; // do nothing and try next overload
686690
catch NoBinding(): ; // do nothing and try next overload
@@ -1595,6 +1599,7 @@ Solver newSolver(map[str,Tree] namedTrees, TModel tm){
15951599
set[loc] cdeps = toSet(dependsOn(clc));
15961600
if(src notin facts && isEmpty(reportedLocations & cdeps)){
15971601
messages += error("Unresolved type<clc has cname ? " for <clc.cname>" : "">", src);
1602+
println("*** Unresolved type calculator:"); iprintln(clc);
15981603
reportedLocations += src;
15991604
}
16001605
}
@@ -1688,7 +1693,7 @@ Solver newSolver(map[str,Tree] namedTrees, TModel tm){
16881693
/* Types */ solver_getType,
16891694
solver_getTypeInScope,
16901695
solver_getTypeInScopeFromName,
1691-
solver_getTypeInType,
1696+
solver_getTypeInType + getTypeInType,
16921697
solver_getAllDefinedInType,
16931698
/*Fact */ fact,
16941699
solver_specializedFact,

0 commit comments

Comments
 (0)