--- /dev/null
+package org.simantics.scl.compiler.types.kinds;
+
+import org.simantics.scl.compiler.types.util.TypeUnparsingContext;
+
+/**
+ * KArrow represents a type kind that has a domain kind and a range kind.
+ */
+public class KArrow extends Kind {
+ public final Kind domain;
+ public final Kind range;
+
+ KArrow(Kind domain, Kind range) {
+ this.domain = domain;
+ this.range = range;
+ }
+
+ @Override
+ protected void toString(TypeUnparsingContext tuc, StringBuilder b) {
+ domain.toStringPar(tuc, b);
+ b.append(" -> ");
+ range.toString(tuc, b);
+ }
+
+ @Override
+ public boolean contains(KMetaVar var) {
+ return domain.contains(var) || range.contains(var);
+ }
+}