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());