]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/SCLCompiler.java
SCL compiler generates line numbers to bytecode
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / compilation / SCLCompiler.java
index 1c674ae4d573126570d8307b9bbf0fc6ff9ba31f..5e713f1f483c0150083ee4a19cdf7970d1f0828e 100644 (file)
@@ -1,18 +1,17 @@
 package org.simantics.scl.compiler.compilation;
 
-import java.io.IOException;
-import java.io.Reader;
+import java.io.StringReader;
 import java.util.ArrayList;
 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.JavaReferenceValidatorFactory;
-import org.simantics.scl.compiler.internal.header.ModuleHeader;
 import org.simantics.scl.compiler.internal.parsing.declarations.DeclarationAst;
 import org.simantics.scl.compiler.internal.parsing.exceptions.SCLSyntaxErrorException;
 import org.simantics.scl.compiler.internal.parsing.parser.SCLParserImpl;
 import org.simantics.scl.compiler.internal.parsing.parser.SCLParserOptions;
+import org.simantics.scl.compiler.internal.parsing.utils.LineLocators;
 import org.simantics.scl.compiler.module.ConcreteModule;
 import org.simantics.scl.compiler.module.options.ModuleCompilationOptions;
 import org.simantics.scl.compiler.top.ModuleInitializer;
@@ -39,10 +38,11 @@ public class SCLCompiler {
     }
 
     @SuppressWarnings("unchecked")
-    public void addSource(Reader sourceReader) {
+    public void addSource(String source) {
         if(SCLCompilerConfiguration.ENABLE_TIMING) initializeTiming();
         try {
-            SCLParserImpl parser = new SCLParserImpl(sourceReader);
+            compilationContext.lineLocator = LineLocators.createLineLocator(source);
+            SCLParserImpl parser = new SCLParserImpl(new StringReader(source));
             parser.setParserOptions(SCLParserOptions.MODULE_DEFAULT);
             parser.setCompilationContext(compilationContext);
             if(!parser.isEmpty())
@@ -52,12 +52,6 @@ public class SCLCompiler {
             compilationContext.errorLog.log(e.location, e.getMessage());
         } catch(Exception e) {
             compilationContext.errorLog.log(e);
-        } finally {
-            try {
-                sourceReader.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
         }
         if(SCLCompilerConfiguration.ENABLE_TIMING) phaseFinished("Parsing");
     }