]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/source/TextualModuleSource.java
Added module header feature to SCL language.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / source / TextualModuleSource.java
index 4f22022e5f46cd6ba5cb60767fbbb05f425f86bf..9a6f4c97fb07c33689e21885a1a641d4bdcadf01 100644 (file)
@@ -11,6 +11,7 @@ import org.simantics.scl.compiler.errors.Failable;
 import org.simantics.scl.compiler.errors.Failure;
 import org.simantics.scl.compiler.errors.Success;
 import org.simantics.scl.compiler.internal.codegen.types.JavaReferenceValidator;
+import org.simantics.scl.compiler.internal.codegen.types.JavaReferenceValidatorFactory;
 import org.simantics.scl.compiler.internal.codegen.types.RuntimeJavaReferenceValidator;
 import org.simantics.scl.compiler.module.ImportDeclaration;
 import org.simantics.scl.compiler.module.Module;
@@ -80,7 +81,7 @@ public abstract class TextualModuleSource implements ModuleSource {
     @SuppressWarnings("unchecked")
     @Override
     public Failable<Module> compileModule(final ModuleRepository environment, final UpdateListener listener, ModuleCompilationOptions options) {
-        SCLCompiler compiler = new SCLCompiler(options);
+        SCLCompiler compiler = new SCLCompiler(options, getJavaReferenceValidatorFactory());
         try {
             compiler.addSource(getSourceReader(listener));
             compiler.compile(
@@ -88,8 +89,7 @@ public abstract class TextualModuleSource implements ModuleSource {
                             environment, 
                             getBuiltinImports(listener),
                             listener),
-                    moduleName,
-                    getJavaReferenceValidator());
+                    moduleName);
             if(compiler.getErrorLog().hasNoErrors())
                 return new Success<Module>(compiler.getModule());
             else {
@@ -102,6 +102,21 @@ public abstract class TextualModuleSource implements ModuleSource {
         }
     }
     
+    public JavaReferenceValidatorFactory getJavaReferenceValidatorFactory() {
+        return new JavaReferenceValidatorFactory() {
+            
+            @Override
+            public JavaReferenceValidator<Object, Object, Object, Object> getJavaReferenceValidator(String context) {
+                return (JavaReferenceValidator<Object, Object, Object, Object>)TextualModuleSource.this.getJavaReferenceValidator();
+            }
+            
+            @Override
+            public JavaReferenceValidator<Object, Object, Object, Object> getDefaultJavaReferenceValidator() {
+                return (JavaReferenceValidator<Object, Object, Object, Object>)TextualModuleSource.this.getJavaReferenceValidator();
+            }
+        };
+    }
+
     @Override
     public double getPriority() {
         return priority;