]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/java/Builtins.java
New SCL completion implementation
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / java / Builtins.java
index 6df643ea38e17f1e51f2689d0288b7f379d02718..e3b429133f2198f65aa4a6b97c75ac2e2b7189c2 100644 (file)
@@ -18,11 +18,13 @@ import org.simantics.scl.compiler.constants.singletons.BindingConstant;
 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;
@@ -103,6 +105,7 @@ public class Builtins extends ConcreteModule {
         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));        
@@ -152,10 +155,12 @@ public class Builtins extends ConcreteModule {
         // *** 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 ***
@@ -208,6 +213,8 @@ public class Builtins extends ConcreteModule {
         
         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 ***
         
@@ -282,7 +289,12 @@ public class Builtins extends ConcreteModule {
                     "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);