--- /dev/null
+package org.simantics.scl.commands.internal.checker;\r
+\r
+import java.util.List;\r
+\r
+import org.simantics.scl.compiler.types.Type;\r
+import org.simantics.scl.runtime.function.Function;\r
+\r
+public class FunctionCheckItem implements CheckItem {\r
+\r
+ Type parameterType;\r
+ CheckItem next;\r
+ \r
+ public FunctionCheckItem(Type parameterType, CheckItem next) {\r
+ this.parameterType = parameterType;\r
+ this.next = next;\r
+ }\r
+\r
+ @SuppressWarnings({ "unchecked", "rawtypes" })\r
+ @Override\r
+ public boolean check(Object check, Object[] parameters, int pos) {\r
+ if(pos == parameters.length)\r
+ return true;\r
+ Object nextCheck = ((Function)check).apply(parameters[pos]);\r
+ return next.check(nextCheck, parameters, pos+1);\r
+ }\r
+\r
+ @Override\r
+ public void collectParameterTypes(List<Type> types) {\r
+ types.add(parameterType);\r
+ next.collectParameterTypes(types);\r
+ }\r
+\r
+}\r