1 package org.simantics.scl.compiler.internal.deriving;
\r
3 import org.simantics.scl.compiler.internal.parsing.types.TApplyAst;
\r
4 import org.simantics.scl.compiler.internal.parsing.types.TTupleAst;
\r
5 import org.simantics.scl.compiler.internal.parsing.types.TVarAst;
\r
6 import org.simantics.scl.compiler.internal.parsing.types.TypeAst;
\r
8 class DerivingUtils {
\r
10 static TVarAst getHeadType(TypeAst typeAst) {
\r
12 if(typeAst instanceof TApplyAst)
\r
13 typeAst = ((TApplyAst)typeAst).function;
\r
14 else if(typeAst instanceof TVarAst)
\r
15 return (TVarAst)typeAst;
\r
16 else if(typeAst instanceof TTupleAst) {
\r
17 TTupleAst tuple = (TTupleAst)typeAst;
\r
18 if(tuple.components.length == 1)
\r
19 typeAst = tuple.components[0];
\r