]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/LazyModule.java
Merge "Fixes to thread safety problems in SCL compiler"
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / module / LazyModule.java
index 00871dcdf377aebd7b1d77051d70182033906841..dc1e40e7321e3097d84be7c439aeb7a5a0c10cb6 100644 (file)
@@ -2,10 +2,14 @@ package org.simantics.scl.compiler.module;
 
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
+import org.simantics.scl.compiler.constants.Constant;
+import org.simantics.scl.compiler.elaboration.chr.CHRRuleset;
 import org.simantics.scl.compiler.elaboration.modules.Documentation;
 import org.simantics.scl.compiler.elaboration.modules.SCLValue;
-import org.simantics.scl.compiler.elaboration.modules.TypeAlias;
 import org.simantics.scl.compiler.elaboration.modules.TypeClass;
 import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance;
 import org.simantics.scl.compiler.elaboration.modules.TypeDescriptor;
@@ -13,6 +17,7 @@ import org.simantics.scl.compiler.elaboration.relations.SCLEntityType;
 import org.simantics.scl.compiler.elaboration.relations.SCLRelation;
 import org.simantics.scl.compiler.elaboration.rules.MappingRelation;
 import org.simantics.scl.compiler.elaboration.rules.TransformationRule;
+import org.simantics.scl.compiler.errors.CompilationError;
 import org.simantics.scl.compiler.internal.codegen.effects.EffectConstructor;
 import org.simantics.scl.compiler.top.ModuleInitializer;
 import org.simantics.scl.compiler.types.TCon;
@@ -22,10 +27,10 @@ import gnu.trove.map.hash.THashMap;
 
 public abstract class LazyModule implements Module {
 
-    String moduleName;
-    private THashMap<String, SCLValue> values = new THashMap<String, SCLValue>();
-    private THashMap<String, SCLRelation> relations = new THashMap<String, SCLRelation>();
-    private THashMap<String, SCLEntityType> entityTypes = new THashMap<String, SCLEntityType>();
+    private final String moduleName;
+    private final Map<String, SCLValue> values = Collections.synchronizedMap(new HashMap<String, SCLValue>());
+    private final Map<String, SCLRelation> relations = Collections.synchronizedMap(new HashMap<String, SCLRelation>());
+    private final Map<String, SCLEntityType> entityTypes = Collections.synchronizedMap(new HashMap<String, SCLEntityType>());
     
     protected abstract SCLValue createValue(String name);
     
@@ -70,6 +75,11 @@ public abstract class LazyModule implements Module {
         }
     }
     
+    @Override
+    public List<Constant> getFieldAccessors(String name) {
+        return null;
+    }
+    
     public SCLRelation getRelation(String name) {
         if(relations.containsKey(name))
             return relations.get(name);
@@ -134,4 +144,19 @@ public abstract class LazyModule implements Module {
     public THashMap<String, BranchPoint[]> getBranchPoints() {
         return null;
     }
+    
+    @Override
+    public CompilationError[] getWarnings() {
+        return CompilationError.EMPTY_ARRAY;
+    }
+    
+    @Override
+    public CHRRuleset getRuleset(String name) {
+        return null;
+    }
+    
+    @Override
+    public String getDeprecation() {
+        return null;
+    }
 }