]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRRuleset.java
SCL compiler generates line numbers to bytecode
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / chr / CHRRuleset.java
index 2a405952219e15b92866fd073020eed2e91f93c1..aa59d4c0239159b604d396be91710fb66d69cfda 100644 (file)
@@ -42,7 +42,6 @@ import org.simantics.scl.compiler.types.Types;
 
 import gnu.trove.map.hash.THashMap;
 import gnu.trove.map.hash.TObjectIntHashMap;
-import gnu.trove.set.hash.THashSet;
 import gnu.trove.set.hash.TIntHashSet;
 
 public class CHRRuleset extends Symbol {
@@ -258,7 +257,7 @@ public class CHRRuleset extends Symbol {
                 PlanRealizer realizer = new PlanRealizer(cachedContext, this, runtimeRulesetVariable, implementationParameters[0], plan.ops);
                 realizer.nextOp(methodWriter);
                 if(methodWriter.isUnfinished())
-                    methodWriter.return_(BooleanConstant.TRUE);
+                    methodWriter.return_(rule.location, BooleanConstant.TRUE);
             }
         }
         if(!includes.isEmpty() || extensible) {
@@ -274,7 +273,7 @@ public class CHRRuleset extends Symbol {
                        methodWriter.apply(Locations.NO_LOCATION,
                                new JavaMethod(true, runtimeRulesetClassName, "register", Types.PROC, Types.UNIT, new Type[] {runtimeRulesetType, Types.CHRContext}),
                                object.getTarget(), methodWriter.getParameters()[0]);
-                methodWriter.return_(NoRepConstant.UNIT);
+                methodWriter.return_(location, NoRepConstant.UNIT);
             }
             {
                 CodeWriter methodWriter = object.createMethod(w.getModuleWriter(), TVar.EMPTY_ARRAY, Types.PROC, Types.UNIT, new Type[] {Types.CHRContext});
@@ -288,7 +287,7 @@ public class CHRRuleset extends Symbol {
                        methodWriter.apply(Locations.NO_LOCATION,
                                new JavaMethod(true, runtimeRulesetClassName, "unregister", Types.PROC, Types.UNIT, new Type[] {runtimeRulesetType, Types.CHRContext}),
                                object.getTarget(), methodWriter.getParameters()[0]);
-                methodWriter.return_(NoRepConstant.UNIT);
+                methodWriter.return_(location, NoRepConstant.UNIT);
             }
         }
         if(initConstraint != null) {
@@ -310,15 +309,6 @@ public class CHRRuleset extends Symbol {
         return runtimeRulesetVariable;
     }
 
-    public void collectEffects(THashSet<Type> effects) {
-        for(CHRRule rule : rules) {
-            for(CHRLiteral literal : rule.head.literals)
-                literal.collectQueryEffects(effects);
-            for(CHRLiteral literal : rule.head.literals)
-                literal.collectEnforceEffects(effects);
-        }
-    }
-
     public void addRule(CHRRule rule) {
         rules.add(rule);
         rule.parentRuleset = this;