fix for calling apply on a prototype added function
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 953f126..fb4ff0a 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
@@ -586,6 +586,9 @@
 						|| "apply".equals(method.getName())) {
 					Object x = reference.getParent().getAttribute(
 							IReferenceAttributes.ELEMENT);
+					if (x == null)
+						x = reference.getParent().getAttribute(
+								IReferenceAttributes.R_METHOD);
 					if (x instanceof IRMethod) {
 						return ConstantValue.of(((IRMethod) x).getType());
 					}
diff --git a/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/validation/TypeInfoValidationTests.java b/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/validation/TypeInfoValidationTests.java
index 712103f..6309bfb 100644
--- a/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/validation/TypeInfoValidationTests.java
+++ b/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/validation/TypeInfoValidationTests.java
@@ -3991,4 +3991,25 @@
 		final List<IProblem> problems = validate(code.toString());
 		assertEquals(problems.toString(), 0, problems.size());
 	}
+	
+	public void test2ApplyMethodOnPrototypeMethod() {
+		final StringList code = new StringList();
+		code.add("function MyConstuctor() {}");
+		code.add("/**");
+		code.add(" * @return {String}");
+		code.add(" */");
+		code.add(" MyConstuctor.prototype.newMessage = function(message, params) {");
+		code.add("	 return ''");
+		code.add(" }");
+		code.add("/**");
+		code.add(" * @param {String} text");
+		code.add(" */");
+		code.add("function meth2(text) {}");
+		code.add("function testMeth() {");
+		code.add("	var o = new MyConstuctor()");
+		code.add("	meth2(o.newMessage.apply(null,[1,2]))");
+		code.add("}");
+		final List<IProblem> problems = validate(code.toString());
+		assertEquals(problems.toString(), 0, problems.size());
+	}
 }