Remove spurious warnings generated by referencing nullField and nullMethod.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4801 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/javac/JsniChecker.java b/dev/core/src/com/google/gwt/dev/javac/JsniChecker.java
index 4584aa6..eef261f 100644
--- a/dev/core/src/com/google/gwt/dev/javac/JsniChecker.java
+++ b/dev/core/src/com/google/gwt/dev/javac/JsniChecker.java
@@ -156,7 +156,7 @@
if (!refErrors.isEmpty()) {
errors.put(jsniRefString, refErrors);
}
- } else {
+ } else if (!jsniRef.className().equals("null")) {
GWTProblem.recordInCud(ProblemSeverities.Warning, meth, cud,
"Referencing class '" + jsniRef.className()
+ ": unable to resolve class, expect subsequent failures",
diff --git a/dev/core/test/com/google/gwt/dev/javac/JsniCheckerTest.java b/dev/core/test/com/google/gwt/dev/javac/JsniCheckerTest.java
index 5a3e358..5c2fa62 100644
--- a/dev/core/test/com/google/gwt/dev/javac/JsniCheckerTest.java
+++ b/dev/core/test/com/google/gwt/dev/javac/JsniCheckerTest.java
@@ -223,6 +223,28 @@
"Referencing method 'Buggy.m': return type 'long' is not safe to access in JSNI code");
}
+ public void testNullField() {
+ StringBuffer code = new StringBuffer();
+ code.append("class Buggy {\n");
+ code.append(" static native Object main() /*-{\n");
+ code.append(" return @null::nullField;\n");
+ code.append(" }-*/;\n");
+ code.append("}\n");
+
+ shouldGenerateNoWarning(code);
+ }
+
+ public void testNullMethod() {
+ StringBuffer code = new StringBuffer();
+ code.append("class Buggy {\n");
+ code.append(" static native Object main() /*-{\n");
+ code.append(" return @null::nullMethod()();\n");
+ code.append(" }-*/;\n");
+ code.append("}\n");
+
+ shouldGenerateNoWarning(code);
+ }
+
public void testOverloadedMethodWithNoWarning() {
StringBuffer code = new StringBuffer();
code.append("class Buggy {\n");
@@ -380,6 +402,10 @@
shouldGenerateError(code, extraCode, -1, null);
}
+ private void shouldGenerateNoWarning(CharSequence code) {
+ shouldGenerateWarning(code, -1, null);
+ }
+
private void shouldGenerateWarning(CharSequence buggyCode,
CharSequence extraCode, int line, String message) {
shouldGenerate(buggyCode, extraCode, line, TreeLogger.WARN, "Warnings",