skip warning on deprecated declarartion itself but keep it on assignign
a existing function

Conflicts:
	tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/validation/TypeInfoValidationTests.java
diff --git a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/validation/TypeInfoValidator.java b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/validation/TypeInfoValidator.java
index 95d6aff..9f78674 100644
--- a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/validation/TypeInfoValidator.java
+++ b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/validation/TypeInfoValidator.java
@@ -2060,7 +2060,15 @@
 					IRMethod method = (IRMethod) result.getAttribute(R_METHOD);
 					if (method != null) {
 						if (method.isDeprecated()) {
-							reporter.reportProblem(
+							boolean report = true;
+							JSNode parent = propertyExpression.getParent();
+							if (parent instanceof BinaryOperation) {
+								Expression rightExpression = ((BinaryOperation) parent)
+										.getRightExpression();
+								report = !(rightExpression instanceof FunctionStatement);
+							}
+							if (report)
+								reporter.reportProblem(
 									JavaScriptProblems.DEPRECATED_FUNCTION,
 									NLS.bind(
 											ValidationMessages.DeprecatedFunction,
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 3405550..1c43b4a 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
@@ -3824,7 +3824,7 @@
 		assertEquals(problems.toString(), 0, problems.size());
 	}
 	
-	public void testDeprecatedProrotypeFunctions() {
+	public void testDeprecatedPrototypeFunctions() {
 		final StringList code = new StringList();
 		code.add("function Sub(name, age) {");
 		code.add(" this.age = age");
@@ -3845,11 +3845,39 @@
 		code.add("	y.baseMethod();");
 		code.add("}");
 		final List<IProblem> problems = validate(code.toString());
+		assertEquals(problems.toString(), 2, problems.size());
+		assertEquals(JavaScriptProblems.DEPRECATED_FUNCTION, problems.get(0)
+				.getID());
+		assertEquals(JavaScriptProblems.DEPRECATED_FUNCTION, problems.get(1)
+				.getID());
+	}
+	
+	public void testDeprecatedValidation() {
+		final StringList code = new StringList();
+		code.add("var y = {");
+		code.add("	/**");
+		code.add("	 * @deprecated"); 
+		code.add("	 */");
+		code.add("	func1: function() {}");
+		code.add("}");
+		code.add("/**");
+		code.add(" * @deprecated"); 
+		code.add(" */");
+		code.add("y.func = function() {}");
+		code.add("/**");
+		code.add(" * @deprecated"); 
+		code.add(" */");
+		code.add("function test() {}");
+		code.add("y.test = test;");
+		code.add("y.func();");
+		code.add("y.func1();");
+		final List<IProblem> problems = validate(code.toString());
 		assertEquals(problems.toString(), 3, problems.size());
 		assertEquals(JavaScriptProblems.DEPRECATED_FUNCTION, problems.get(0)
 				.getID());
 		assertEquals(JavaScriptProblems.DEPRECATED_FUNCTION, problems.get(1)
 				.getID());
 		assertEquals(JavaScriptProblems.DEPRECATED_FUNCTION, problems.get(2)
-				.getID());	}
+				.getID());
+	}
 }