]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/source/TextualModuleSource.java
SCL compiler generates line numbers to bytecode
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / source / TextualModuleSource.java
index e0d1c91e4da51e3b6b0b8d583b848857ae9a11b6..7d0e5335281684aac58ea296d1f51bf71875576c 100644 (file)
@@ -2,6 +2,7 @@ package org.simantics.scl.compiler.source;
 
 import java.io.IOException;
 import java.io.Reader;
+import java.io.StringReader;
 import java.util.Arrays;
 
 import org.simantics.scl.compiler.compilation.SCLCompiler;
@@ -46,14 +47,17 @@ public abstract class TextualModuleSource implements ModuleSource {
         return getClass().getClassLoader();
     }
 
-    protected abstract Reader getSourceReader(UpdateListener listener) throws IOException;
+    protected Reader getSourceReader(UpdateListener listener) throws IOException {
+        return new StringReader(getSourceText(listener));
+    }
+    
     protected JavaReferenceValidator<?, ?, ?, ?> getJavaReferenceValidator() {
         return new RuntimeJavaReferenceValidator(getClassLoader());
     }
     
     public String getSourceText(UpdateListener listener) throws IOException {
         Reader reader = getSourceReader(listener);
-        char[] buffer = new char[65536];
+        char[] buffer = new char[4096];
         int pos = 0;
         try {
             while(true) {
@@ -83,7 +87,8 @@ public abstract class TextualModuleSource implements ModuleSource {
     public Failable<Module> compileModule(final ModuleRepository environment, final UpdateListener listener, ModuleCompilationOptions options) {
         SCLCompiler compiler = new SCLCompiler(options, getJavaReferenceValidatorFactory());
         try {
-            compiler.addSource(getSourceReader(listener));
+            String source = getSourceText(listener);
+            compiler.addSource(source);
             compiler.compile(
                     new EnvironmentFactoryImpl(
                             environment,