]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/types/TFun.java
(refs #7746) Fixed applications with intermediate effects
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / types / TFun.java
index e26c5b07ac923922a8c4e4270ede948b3b1f3cbb..620ef18307421a9bcfeced6410a6ff3045dd4ff9 100644 (file)
@@ -57,7 +57,7 @@ public class TFun extends Type {
     public TypeAst toTypeAst(TypeUnparsingContext context) {
         TypeAst domainAst = domain.toTypeAst(context);
         TypeAst rangeAst = range.toTypeAst(context);
-        if(Types.canonical(effect) != Types.NO_EFFECTS)
+        if(Types.canonical(effect) != Types.NO_EFFECTS && !context.showSkeletons)
             rangeAst = new TEffectAst(effect.toTypeAst(context), rangeAst);
         Type dom = Types.canonical(domain);
         if(dom instanceof TPred)
@@ -209,6 +209,22 @@ public class TFun extends Type {
         return hash;
     }
     
+    @Override
+    public int skeletonHashCode(int hash) {
+        hash = HashCodeUtils.updateWithPreprocessedValue(hash, FUN_HASH);
+        hash = domain.skeletonHashCode(hash);
+        hash = range.skeletonHashCode(hash);
+        return hash;
+    }
+    
+    @Override
+    public int skeletonHashCode(int hash, TVar[] boundVars) {
+        hash = HashCodeUtils.updateWithPreprocessedValue(hash, FUN_HASH);
+        hash = domain.skeletonHashCode(hash, boundVars);
+        hash = range.skeletonHashCode(hash, boundVars);
+        return hash;
+    }
+    
     public Type getCanonicalDomain() {
         if(domain instanceof TMetaVar)
             domain = domain.canonical();
@@ -243,4 +259,9 @@ public class TFun extends Type {
     public Kind getKind(Environment context) {
         return Kinds.STAR;
     }
+    
+    @Override
+    public Type[] skeletonCanonicalChildren() {
+        return new Type[] {Skeletons.canonicalSkeleton(domain), Skeletons.canonicalSkeleton(range)};
+    }
 }