log error if null type occurred in visitArrayInitializer()
diff --git a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitor.java b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitor.java
index 952df67..60e31d4 100644
--- a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitor.java
+++ b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitor.java
@@ -90,6 +90,7 @@
import org.eclipse.dltk.javascript.ast.XmlLiteral;
import org.eclipse.dltk.javascript.ast.XmlTextFragment;
import org.eclipse.dltk.javascript.ast.YieldOperator;
+import org.eclipse.dltk.javascript.core.JavaScriptPlugin;
import org.eclipse.dltk.javascript.core.JavaScriptProblems;
import org.eclipse.dltk.javascript.core.Types;
import org.eclipse.dltk.javascript.internal.core.RRecordMember;
@@ -237,6 +238,11 @@
final IValueReference child = visit(astNode);
if (child != null && child.exists()) {
for (IRType type : JavaScriptValidations.getTypes(child)) {
+ if (type == null) {
+ JavaScriptPlugin.error(buildNodeErrorMessage(node)
+ + " - item type is null");
+ continue;
+ }
types.add(type.normalize());
}
}
diff --git a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitorBase.java b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitorBase.java
index df363d9..939c8a2 100644
--- a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitorBase.java
+++ b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitorBase.java
@@ -119,15 +119,15 @@
} catch (PositionReachedException e) {
throw e;
} catch (RuntimeException e) {
- JavaScriptPlugin.error(buildErrorMessage(node), e);
+ JavaScriptPlugin.error(buildNodeErrorMessage(node), e);
throw e;
} catch (AssertionError e) {
- JavaScriptPlugin.error(buildErrorMessage(node), e);
+ JavaScriptPlugin.error(buildNodeErrorMessage(node), e);
throw e;
}
}
- private String buildErrorMessage(ASTNode node) {
+ protected String buildNodeErrorMessage(ASTNode node) {
final StringBuilder sb = new StringBuilder();
sb.append("Error processing ");
sb.append(node.getClass().getName());