Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@
<dependency>
<groupId>org.rascalmpl</groupId>
<artifactId>rascal</artifactId>
<version>0.41.2</version>
<version>0.42.0-RC2</version>
<scope>provided</scope>
</dependency>
</dependencies>
Expand Down
6 changes: 3 additions & 3 deletions src/analysis/typepal/Collector.rsc
Original file line number Diff line number Diff line change
Expand Up @@ -376,9 +376,9 @@ Collector newCollector(str modelName, map[str,Tree] namedTrees, TypePalConfig co
}
}

AType(Solver) makeGetTypeInType(loc containerLoc, Tree selector, set[IdRole] idRolesSel, loc scope){
AType(Solver) makeGetTypeInType(Tree container, Tree selector, set[IdRole] idRolesSel, loc scope){
return AType(Solver s) {
return s.getTypeInType(s.getType(containerLoc), selector, idRolesSel, scope);
return s.getTypeInType(container, selector, idRolesSel, scope);
};
}

Expand All @@ -387,7 +387,7 @@ Collector newCollector(str modelName, map[str,Tree] namedTrees, TypePalConfig co
name = normalizeName("<selector>");
selectorLoc = getLoc(selector);
containerLoc = getLoc(container);
calculators += calc("useViaType `<name>` in <containerLoc>", selectorLoc, [containerLoc], makeGetTypeInType(containerLoc, selector, idRolesSel, currentScope));
calculators += calc("useViaType `<name>` in <containerLoc>", selectorLoc, [containerLoc], makeGetTypeInType(container, selector, idRolesSel, currentScope));
} else {
throw TypePalUsage("Cannot call `useViaType` on Collector after `run`");
}
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/typepal/ISolver.rsc
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ data Solver
/* Types */ AType(value) getType,
AType (Tree occ, loc scope, set[IdRole] idRoles) getTypeInScope,
AType (str name, loc scope, set[IdRole] idRoles) getTypeInScopeFromName,
AType (AType containerType, Tree selector, set[IdRole] idRolesSel, loc scope) getTypeInType,
AType (Tree container, Tree selector, set[IdRole] idRolesSel, loc scope) getTypeInType,
rel[str id, AType atype] (AType containerType, loc scope, set[IdRole] idRoles) getAllDefinedInType,
/* Fact */ void (value, AType) fact,
void (value, AType) specializedFact,
Expand Down
11 changes: 8 additions & 3 deletions src/analysis/typepal/Solver.rsc
Original file line number Diff line number Diff line change
Expand Up @@ -666,7 +666,11 @@ Solver newSolver(map[str,Tree] namedTrees, TModel tm){
}
}

AType solver_getTypeInType(AType containerType, Tree selector, set[IdRole] idRolesSel, loc scope){
AType solver_getTypeInType(Tree container, Tree selector, set[IdRole] idRolesSel, loc scope){
return getTypeInType(solver_getType(getLogicalLoc(container)), selector, idRolesSel, scope);
}

AType getTypeInType(AType containerType, Tree selector, set[IdRole] idRolesSel, loc scope){
if(!solver_isFullyInstantiated(containerType)){
throw TypeUnavailable();
}
Expand All @@ -680,7 +684,7 @@ Solver newSolver(map[str,Tree] namedTrees, TModel tm){
rel[loc, IdRole, AType] valid_overloads = {};
for(<key, role, tp> <- overloads){
try {
selectorType = solver_getTypeInType(tp, selector, idRolesSel, scope);
selectorType = getTypeInType(tp, selector, idRolesSel, scope);
valid_overloads += <key, role, selectorType>;
} catch checkFailed(list[FailMessage] _): ; // do nothing and try next overload
catch NoBinding(): ; // do nothing and try next overload
Expand Down Expand Up @@ -1595,6 +1599,7 @@ Solver newSolver(map[str,Tree] namedTrees, TModel tm){
set[loc] cdeps = toSet(dependsOn(clc));
if(src notin facts && isEmpty(reportedLocations & cdeps)){
messages += error("Unresolved type<clc has cname ? " for <clc.cname>" : "">", src);
println("*** Unresolved type calculator:"); iprintln(clc);
reportedLocations += src;
}
}
Expand Down Expand Up @@ -1688,7 +1693,7 @@ Solver newSolver(map[str,Tree] namedTrees, TModel tm){
/* Types */ solver_getType,
solver_getTypeInScope,
solver_getTypeInScopeFromName,
solver_getTypeInType,
solver_getTypeInType + getTypeInType,
solver_getAllDefinedInType,
/*Fact */ fact,
solver_specializedFact,
Expand Down