import org.simantics.scl.compiler.constants.SCLConstant;
import org.simantics.scl.compiler.constants.SCLConstructor;
import org.simantics.scl.compiler.constants.singletons.BindingConstant;
+import org.simantics.scl.compiler.constants.singletons.ClassConstant;
import org.simantics.scl.compiler.constants.singletons.FailFunction;
import org.simantics.scl.compiler.constants.singletons.JustConstant;
import org.simantics.scl.compiler.constants.singletons.NothingConstant;
+import org.simantics.scl.compiler.constants.singletons.ThrowFunction;
import org.simantics.scl.compiler.constants.singletons.TypeOfConstant;
import org.simantics.scl.compiler.constants.singletons.TypeOfProxyConstant;
import org.simantics.scl.compiler.constants.singletons.TypeProxyConstant;
import org.simantics.scl.compiler.elaboration.fundeps.Fundep;
import org.simantics.scl.compiler.elaboration.modules.Documentation;
+import org.simantics.scl.compiler.elaboration.modules.PrivateProperty;
import org.simantics.scl.compiler.elaboration.modules.SCLValue;
import org.simantics.scl.compiler.elaboration.modules.TypeClass;
import org.simantics.scl.compiler.errors.Locations;
addTypeDescriptor("Variant", new StandardTypeConstructor(Types.VARIANT, Kinds.STAR, TypeDesc.forClass(Variant.class)));
addEffectConstructor("Proc", new EffectConstructor(Types.PROC));
+ addEffectConstructor("Exception", new EffectConstructor(Types.EXCEPTION));
//addTypeDescriptor("->", new StandardTypeConstructor(Kinds.STAR_TO_STAR_TO_STAR, Constants.FUNCTION));
addTypeDescriptor("[]", new StandardTypeConstructor(Types.LIST, Kinds.STAR_TO_STAR, Constants.LIST));
// *** Lists ***
for(int arity=0;arity<=Constants.MAX_LIST_LITERAL_LENGTH;++arity) {
- LIST_CONSTRUCTORS[arity] = addValue("_list_literal_" + arity + "_",
+ SCLValue value = addValue("_list_literal_" + arity + "_",
arity == 0 ? new EmptyListConstructor() :
new ListConstructor(arity)
);
+ value.addProperty(PrivateProperty.INSTANCE);
+ LIST_CONSTRUCTORS[arity] = value;
}
// *** Boolean ***
new Constructor(Locations.NO_LOCATION, MaybeType.INSTANCE, Just.getName(), new Type[] {MaybeType.INSTANCE.parameters[0]}, null)
);
+ // *** Dynamic ***
+
+ addValue("Dynamic", DynamicConstructor.INSTANCE);
+
// *** Vector ***
TypeClass VecCompC = new TypeClass(Locations.NO_LOCATION,
addValue("freezeMVector", new FreezeMVector());
addValue("setMVector", SetMVector.INSTANCE);
+ StandardTypeConstructor ClassC = new StandardTypeConstructor(Types.CLASS, Kinds.STAR_TO_STAR,
+ TypeDesc.forClass("java/lang/Class"));
+ ClassC.setType(Types.CLASS, A);
+ addTypeDescriptor("Class", ClassC);
+ addValue("classObject", ClassConstant.INSTANCE);
+
// *** fail ***
addValue("fail", FailFunction.INSTANCE).documentation =
"Throws a runtime exeception with the given string as a description.";
+ addValue("throw", ThrowFunction.INSTANCE).documentation =
+ "Throws a given exception.";
// *** runProc ***
"union",
Types.NO_EFFECTS,
Type, Type, Type));
-
+ addValue("TUnion3", new JavaStaticMethod(
+ "org/simantics/scl/compiler/types/Types",
+ "union",
+ Types.NO_EFFECTS,
+ Type, Type, Type, Type));
+
StandardTypeConstructor TypeC = new StandardTypeConstructor(Type, Kinds.STAR,
TypeDesc.forClass("org/simantics/scl/compiler/types/Type"));
TypeC.setType(Type);