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",