]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/Assignment.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / Assignment.java
1 package org.simantics.scl.compiler.elaboration.expressions;\r
2 \r
3 import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;\r
4 import org.simantics.scl.compiler.internal.elaboration.utils.ExpressionDecorator;\r
5 import org.simantics.scl.compiler.types.Type;\r
6 \r
7 public class Assignment {\r
8     public Expression pattern;\r
9     public Expression value;\r
10     \r
11     public Assignment(Expression pattern, Expression value) {\r
12         if(Type.NULL_CHECKS) {\r
13             if(pattern == null)\r
14                 throw new NullPointerException();\r
15             if(value == null)\r
16                 throw new NullPointerException();\r
17         }\r
18         this.pattern = pattern;\r
19         this.value = value;\r
20     }\r
21 \r
22     public Assignment replace(ReplaceContext context) {\r
23         Expression newPattern = pattern.replaceInPattern(context);\r
24         Expression newValue = value.replace(context);\r
25         return new Assignment(newPattern, newValue);\r
26     }\r
27 \r
28     public void decorate(ExpressionDecorator decorator) {\r
29         pattern = pattern.decorate(decorator);\r
30         value = value.decorate(decorator);\r
31     }\r
32 \r
33     public void setLocationDeep(long loc) {\r
34         pattern.setLocationDeep(loc);\r
35         value.setLocationDeep(loc);\r
36     }\r
37 \r
38     public void forVariables(VariableProcedure procedure) {\r
39         value.forVariables(procedure);\r
40     }\r
41 }\r