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