1 package org.simantics.scl.compiler.elaboration.query.pre;
3 import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;
4 import org.simantics.scl.compiler.elaboration.expressions.QueryTransformer;
5 import org.simantics.scl.compiler.elaboration.expressions.Variable;
6 import org.simantics.scl.compiler.elaboration.query.QExists;
7 import org.simantics.scl.compiler.elaboration.query.Query;
8 import org.simantics.scl.compiler.errors.Locations;
10 public class QPreExists extends PreQuery {
14 public QPreExists(String[] variables, Query query) {
15 this.variables = variables;
20 public Query resolve(TranslationContext context) {
22 Variable[] newVariables = new Variable[variables.length];
23 for(int i=0;i<variables.length;++i)
24 newVariables[i] = context.newVariable(variables[i]);
25 Query newQuery = query.resolve(context);
28 QExists result = new QExists(newVariables, newQuery);
29 result.location = location;
34 public void setLocationDeep(long loc) {
35 if(location == Locations.NO_LOCATION) {
37 query.setLocationDeep(loc);
42 public Query accept(QueryTransformer transformer) {
43 return transformer.transform(this);