]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EAmbiguous.java
Fixed incorrect interaction of EAmbigious and TMetaVar.setRef
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / EAmbiguous.java
index 0826bbbca5727b925b57155190985f4269e6defa..0afb14b89f42c92060710133ae34186d3551d07d 100644 (file)
@@ -16,8 +16,6 @@ import org.simantics.scl.compiler.types.util.TypeListener;
 import org.simantics.scl.compiler.types.util.TypeUnparsingContext;
 
 import gnu.trove.map.hash.THashMap;
-import gnu.trove.map.hash.TObjectIntHashMap;
-import gnu.trove.set.hash.TIntHashSet;
 
 public class EAmbiguous extends SimplifiableExpression {
     public static final boolean DEBUG = false;
@@ -41,11 +39,6 @@ public class EAmbiguous extends SimplifiableExpression {
         this.activeCount = alternatives.length;
     }
 
-    @Override
-    public void collectVars(TObjectIntHashMap<Variable> allVars,
-            TIntHashSet vars) {
-    }
-
     @Override
     protected void updateType() throws MatchException {
         throw new InternalCompilerError();
@@ -63,7 +56,7 @@ public class EAmbiguous extends SimplifiableExpression {
         THashMap<TMetaVar,Type> unifications = new THashMap<TMetaVar,Type>(); 
         Type requiredType = getType();
         if(DEBUG)
-            System.out.println("EAmbigious.filterActive with " + requiredType);
+            System.out.println("EAmbigious.filterActive with " + requiredType.toStringSkeleton());
         for(int i=0;i<alternatives.length;++i)
             if(active[i]) {
                 unifications.clear();
@@ -83,7 +76,7 @@ public class EAmbiguous extends SimplifiableExpression {
         StringBuilder b = new StringBuilder();
         b.append("Expected <");
         requiredType.toString(new TypeUnparsingContext(), b);
-        b.append(">, but no alteratives match the type: ");
+        b.append(">, but no alternatives match the type: ");
         for(int i=0;i<alternatives.length;++i) {
             b.append("\n    ");
             b.append(alternatives[i]);
@@ -124,12 +117,12 @@ public class EAmbiguous extends SimplifiableExpression {
     
     private void listenType() {
         if(DEBUG)
-            System.out.println("EAmbigious.listenType " + getType());
+            System.out.println("EAmbigious.listenType " + getType().toStringSkeleton());
         new TypeListener() {
             @Override
             public void notifyAboutChange() {
                 if(DEBUG)
-                    System.out.println("EAmbigious.notifyAboutChange " + getType());
+                    System.out.println("EAmbigious.notifyAboutChange " + getType().toStringSkeleton());
                 Type requiredType = getType();
                 filterActive();
                 if(activeCount == 0) {
@@ -184,14 +177,19 @@ public class EAmbiguous extends SimplifiableExpression {
         if(resolvedExpression != null)
             return resolvedExpression;
         else {
+            if(DEBUG)
+                System.out.println("EAmbigious.simplify: error");
             context.getErrorLog().log(location, getAmbiguousDescription(getType()));
             return this;
         }
     }
     
     public void assertResolved(ErrorLog errorLog) {
-        if(resolvedExpression == null)
+        if(resolvedExpression == null) {
+            if(DEBUG)
+                System.out.println("EAmbigious.assertResolved: error");
             errorLog.log(location, getAmbiguousDescription(getType()));
+        }
     }
     
     @Override