]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/query/QAlternative.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / query / QAlternative.java
1 package org.simantics.scl.compiler.elaboration.query;
2
3 import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;
4 import org.simantics.scl.compiler.elaboration.expressions.QueryTransformer;
5 import org.simantics.scl.compiler.elaboration.query.compilation.ConstraintCollectionContext;
6
7
8 public class QAlternative extends QAbstractCombiner {
9
10     public QAlternative(Query ... queries) {
11         super(queries);
12     }
13
14     @Override
15     public void collectConstraints(final ConstraintCollectionContext context) {
16         throw new UnsupportedOperationException();
17     }
18     
19     @Override
20     public Query replace(ReplaceContext context) {
21         Query[] newQueries = new Query[queries.length];
22         for(int i=0;i<queries.length;++i)
23             newQueries[i] = queries[i].replace(context);
24         return new QAlternative(newQueries);
25     }
26  
27     @Override
28     public void accept(QueryVisitor visitor) {
29         visitor.visit(this);
30     }
31
32     @Override
33     public Query accept(QueryTransformer transformer) {
34         return transformer.transform(this);
35     }
36
37 }