fix to support for Object.create(null)


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 1f0c063..1087f11 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
@@ -408,7 +408,7 @@
 										RTypes.localType(name, context
 												.getParent().getChild(name)));
 							}
-						}
+						} 
 						else {
 							left.setKind(ReferenceKind.FIELD);
 							final Comment comment = JSDocSupport
@@ -536,8 +536,7 @@
 			if (methods != null && methods.size() == 1) {
 				final IRMethod method = methods.get(0);
 				IValueReference ref = checkSpecialJavascriptFunctionCalls(
-						reference,
-						arguments, method);
+						reference, arguments, method);
 				if (ref != null)
 					return ref;
 				if (method.isGeneric()) {
@@ -597,10 +596,12 @@
 				}
 			} else if (method.getName().equals("create")
 					&& RTypes.OBJECT.getDeclaration().equals(
-							method.getDeclaringType()) && arguments.length > 0) {
+							method.getDeclaringType()) && arguments.length > 0
+					&& arguments[0] != null) {
 				AnonymousValue value = new AnonymousValue();
 				IValue argumentValue = ((IValueProvider) arguments[0])
 						.getValue();
+
 				if (argumentValue != null)
 					value.getValue().addValue(argumentValue);
 				if (arguments.length == 2) {
@@ -616,9 +617,9 @@
 											.getType()).getMember("value");
 									if (valueMember != null) {
 										newMembers.add(new RRecordMember(member
-												.getName(), valueMember
+														.getName(), valueMember
 														.getType(), member
-												.getSource()));
+														.getSource()));
 									}
 									valueMember = ((IRRecordType) member
 											.getType()).getMember("get");
@@ -639,7 +640,7 @@
 							}
 							if (newMembers.size() > 0) {
 								value.addValue(ConstantValue.of(RTypes
-									.recordType(newMembers)), true);
+										.recordType(newMembers)), true);
 							}
 						}
 					}
diff --git a/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/typeinference/TypeInferenceTests.java b/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/typeinference/TypeInferenceTests.java
index 7bc391a..9dbda10 100644
--- a/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/typeinference/TypeInferenceTests.java
+++ b/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/typeinference/TypeInferenceTests.java
@@ -1367,5 +1367,14 @@
 		assertEquals(20, location.getNameStart());
 		assertEquals(26, location.getNameEnd());
 	}
+	
+	public void testObjectCreateCallWithNull() {
+		final StringList code = new StringList();
+		code.add("var p = Object.create(null)");
+		final IValueCollection collection = inference(code.toString());
+		IValueReference func = collection.getChild("p").getChild("hasOwnProperty");
+		assertTrue(func.exists());
+		
+	}
 
 }