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);
String moduleName) {
try {
if(hasErrors()) return;
- compilationContext.header = ModuleHeader.process(compilationContext.errorLog, declarations.moduleHeader);
Elaboration elaboration = new Elaboration(compilationContext,
timer,
localEnvironmentFactory,
declarations.relationDefinitionsAst);
if(options.computeCoverage)
elaboration.addCoverageBranchPoints();
+ if(options.collectDebugInfo)
+ elaboration.collectDebugInfo();
// Elaboration
if(hasErrors()) return;
+ elaboration.prepareExports();
+ 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;
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);
elaboration.addValueDefinitionsToEnvironment(declarations.typeAnnotationsAst);
elaboration.processRules(declarations.rulesAst);
elaboration.addSupplementedTypeAnnotationsToEnvironment();
+ elaboration.checkExports();
if(SCLCompilerConfiguration.ENABLE_TIMING) phaseFinished("Elaboration");
// Type checking