]> gerrit.simantics Code Review - simantics/platform.git/commitdiff
(refs #7460) Prevent NPE if variable type is null. 04/904/1
authorHannu Niemistö <hannu.niemisto@semantum.fi>
Sun, 3 Sep 2017 08:12:15 +0000 (11:12 +0300)
committerHannu Niemistö <hannu.niemisto@semantum.fi>
Sun, 3 Sep 2017 08:12:15 +0000 (11:12 +0300)
This may happen, if the variable is defined in a pattern and
the pattern type checking is not finished because of a type error.

Change-Id: I91aa4c7938769f84388fbc18f089b662e3ddcb9d

bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EVariable.java

index 7fe0e0a92d3220ceaf604c24715d9a48a0865044..155aa7578f3821d399e0e2fd227791a65e1850d7 100644 (file)
@@ -132,8 +132,13 @@ public class EVariable extends Expression {
             variable.setType(Types.metaVar(Kinds.STAR));
             return this;
         }
-        else
+        else {
+            if(variable.getType() == null) {
+                context.getErrorLog().log(location, "Type of the variable is not defined.");
+                variable.setType(Types.metaVar(Kinds.STAR));
+            }
             return applyPUnit(context);
+        }
     }
     
     @Override
@@ -142,8 +147,13 @@ public class EVariable extends Expression {
             variable.setType(requiredType);
             return this;
         }
-        else
+        else {
+            if(variable.getType() == null) {
+                context.getErrorLog().log(location, "Type of the variable is not defined.");
+                variable.setType(Types.metaVar(Kinds.STAR));
+            }
             return context.subsume(this, requiredType);
+        }
     }
     
     @Override