X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fexpressions%2FCase.java;h=50eda1c130d6840475875276a71f011760ce53ce;hp=219cce461a10adb586c484a3713a546152e7772c;hb=9a175feb652b2b7bba7afa540831b9076be3c10e;hpb=0b72d3e4ec886838314ffeba0fa201e32c0aae3e diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/Case.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/Case.java index 219cce461..50eda1c13 100755 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/Case.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/Case.java @@ -1,9 +1,5 @@ package org.simantics.scl.compiler.elaboration.expressions; -import gnu.trove.map.hash.TObjectIntHashMap; -import gnu.trove.set.hash.THashSet; -import gnu.trove.set.hash.TIntHashSet; - import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext; import org.simantics.scl.compiler.elaboration.contexts.SimplificationContext; import org.simantics.scl.compiler.elaboration.contexts.TranslationContext; @@ -13,6 +9,10 @@ import org.simantics.scl.compiler.internal.elaboration.utils.ExpressionDecorator import org.simantics.scl.compiler.internal.parsing.Symbol; import org.simantics.scl.compiler.types.Type; +import gnu.trove.map.hash.TObjectIntHashMap; +import gnu.trove.set.hash.THashSet; +import gnu.trove.set.hash.TIntHashSet; + public class Case extends Symbol { public Expression[] patterns; public Expression value; @@ -99,6 +99,17 @@ public class Case extends Symbol { patterns[i] = patterns[i].checkTypeAsPattern(context, parameterTypes[i]); value = value.checkType(context, requiredType); } + + public void checkIgnoredType(TypingContext context, Type[] parameterTypes) { + if(patterns.length != parameterTypes.length) { + context.getErrorLog().log(location, "This case has different arity ("+patterns.length+ + ") than than the first case (+"+parameterTypes.length+"+)."); + return; + } + for(int i=0;i