]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/translation/CHRTranslation.java
(refs #7866) Better error location for the NPE in compilation
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / chr / translation / CHRTranslation.java
index d4f21a7265178bfe2b629066b423349066cd917f..107905ae32e5debae35bd01f93f7e857cddd1e8a 100644 (file)
@@ -5,7 +5,6 @@ import java.util.Arrays;
 
 import org.simantics.scl.compiler.elaboration.chr.CHRLiteral;
 import org.simantics.scl.compiler.elaboration.chr.CHRQuery;
-import org.simantics.scl.compiler.elaboration.chr.CHRRule;
 import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint;
 import org.simantics.scl.compiler.elaboration.chr.relations.SpecialCHRRelation;
 import org.simantics.scl.compiler.elaboration.chr.relations.UnresolvedCHRRelation;
@@ -15,7 +14,6 @@ import org.simantics.scl.compiler.elaboration.expressions.EBinary;
 import org.simantics.scl.compiler.elaboration.expressions.ERecord;
 import org.simantics.scl.compiler.elaboration.expressions.EVar;
 import org.simantics.scl.compiler.elaboration.expressions.Expression;
-import org.simantics.scl.compiler.elaboration.expressions.block.CHRStatement;
 import org.simantics.scl.compiler.elaboration.expressions.block.ConstraintStatement;
 import org.simantics.scl.compiler.elaboration.expressions.list.ListAssignment;
 import org.simantics.scl.compiler.elaboration.expressions.list.ListGenerator;
@@ -131,21 +129,23 @@ public class CHRTranslation {
     }
 
     public static CHRQuery convertCHRQuery(TranslationContext context, boolean isHead, ListQualifier[] lqs) {
+        long location = Locations.NO_LOCATION;
         ArrayList<CHRLiteral> query = new ArrayList<CHRLiteral>(lqs.length);
         for(ListQualifier qualifier : lqs) {
+            location = Locations.combine(location, qualifier.location);
             CHRLiteral literal = convertListQualifier(context, isHead, qualifier);
             if(literal != null)
                 query.add(literal);
         }
-        return new CHRQuery(query.toArray(new CHRLiteral[query.size()]));
+        return new CHRQuery(location, query.toArray(new CHRLiteral[query.size()]));
     }
     
-    public static CHRRule convertCHRStatement(TranslationContext context, CHRStatement statement) {
+    /*public static CHRRule convertCHRStatement(TranslationContext context, CHRStatement statement) {
         return new CHRRule(statement.location,
                 convertCHRQuery(context, true, statement.head),
                 convertCHRQuery(context, false, statement.body),
                 null);
-    }
+    }*/
 
     public static CHRConstraint convertConstraintStatement(TranslationContext context, ConstraintStatement statement) {
         CHRConstraint constraint = new CHRConstraint(statement.location, statement.name.text, TypeAst.toTypes(context, statement.parameterTypes));