@@ -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