X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fparsing%2Ftypes%2FTApplyAst.java;h=1aeba20713063dc70728bf443b907fdbb491b951;hb=refs%2Fchanges%2F24%2F1124%2F1;hp=c1b2d43723e744f780983627d7d1f3480db55897;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/types/TApplyAst.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/types/TApplyAst.java index c1b2d4372..1aeba2071 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/types/TApplyAst.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/types/TApplyAst.java @@ -4,6 +4,7 @@ import java.util.Arrays; import org.simantics.scl.compiler.elaboration.contexts.TypeTranslationContext; import org.simantics.scl.compiler.elaboration.modules.TypeAlias; +import org.simantics.scl.compiler.elaboration.modules.TypeDescriptor; import org.simantics.scl.compiler.environment.AmbiguousNameException; import org.simantics.scl.compiler.environment.Environments; import org.simantics.scl.compiler.internal.types.TypeElaborationContext; @@ -38,23 +39,29 @@ public class TApplyAst extends TypeAst { public Type toType(TypeTranslationContext context, Kind expectedKind) { if(function instanceof TVarAst) { String name = ((TVarAst)function).name; - TypeAlias alias; + TypeAlias alias = null; try { - alias = Environments.getTypeAlias(context.getEnvironment(), name); + TypeDescriptor tdesc = Environments.getTypeDescriptor(context.getEnvironment(), name); + if(tdesc instanceof TypeAlias) + alias = (TypeAlias)tdesc; } catch (AmbiguousNameException e) { context.getErrorLog().log(location, e.getMessage()); return Types.metaVar(Kinds.STAR); } if(alias != null) { - if(parameters.length != alias.getArity()) { + int arity = alias.getArity(); + if(parameters.length < arity) { context.getErrorLog().log(location, "Wrong number of parameters are given to the type alias. Expected " + - alias.getArity() + " parameters, got " + parameters.length + " parameters."); + arity + " parameters, got " + parameters.length + " parameters."); return Types.metaVar(Kinds.metaVar()); } - Type[] parameterTypes = new Type[parameters.length]; - for(int i=0;i