]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/SCLCompiler.java
Collect reference hierarchy for SCL values
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / compilation / SCLCompiler.java
index 65e89edf1bc7c26fb4e8c1563083647b6d1cf231..0da48676ad0088cda95db8c4a5a53ae5942be191 100644 (file)
@@ -7,7 +7,6 @@ import java.util.Map;
 
 import org.simantics.scl.compiler.environment.EnvironmentFactory;
 import org.simantics.scl.compiler.errors.ErrorLog;
-import org.simantics.scl.compiler.internal.codegen.types.JavaReferenceValidator;
 import org.simantics.scl.compiler.internal.codegen.types.JavaReferenceValidatorFactory;
 import org.simantics.scl.compiler.internal.header.ModuleHeader;
 import org.simantics.scl.compiler.internal.parsing.declarations.DeclarationAst;
@@ -45,6 +44,7 @@ public class SCLCompiler {
         try {
             SCLParserImpl parser = new SCLParserImpl(sourceReader);
             parser.setParserOptions(SCLParserOptions.MODULE_DEFAULT);
+            parser.setCompilationContext(compilationContext);
             if(!parser.isEmpty())
             for(DeclarationAst declaration : (ArrayList<DeclarationAst>)parser.parseModule())
                 declarations.handle(declaration);
@@ -75,19 +75,22 @@ public class SCLCompiler {
                     timer,
                     localEnvironmentFactory,
                     moduleName,
-                    ModuleHeader.process(compilationContext.errorLog, declarations.moduleHeader),
+                    compilationContext.header,
                     declarations.importsAst,
                     jrvFactory,
                     declarations.valueDefinitionsAst,
                     declarations.relationDefinitionsAst);
             if(options.computeCoverage)
                 elaboration.addCoverageBranchPoints();
+            if(options.collectDebugInfo)
+                elaboration.collectDebugInfo();
             // Elaboration
             if(hasErrors()) return;
             elaboration.addTypesToEnvironment(
                     declarations.dataTypesAst,
                     declarations.typeAliasesAst,
-                    declarations.effectsAst);
+                    declarations.effectsAst,
+                    declarations.rulesetsAst);
             if(hasErrors()) return;
             elaboration.processTypeAliases(declarations.typeAliasesAst);
             if(hasErrors()) return;
@@ -101,6 +104,8 @@ public class SCLCompiler {
             if(hasErrors()) return;
             elaboration.processJavaMethods(declarations.javaMethodDeclarations);
             if(hasErrors()) return;
+            elaboration.processRulesets(declarations.rulesetsAst);
+            if(hasErrors()) return;
             elaboration.addDataTypesToEnvironment();
             elaboration.addTypeClassesToEnvironment();
             elaboration.preprocessValueDefinitions(declarations.typeAnnotationsAst);