Allow passing arrays of (arrays of...) longs into and out of JSNI methods.

Review by: mmendez (desk check)


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2353 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jdt/LongFromJSNIChecker.java b/dev/core/src/com/google/gwt/dev/jdt/LongFromJSNIChecker.java
index 1c89410..158c65a 100644
--- a/dev/core/src/com/google/gwt/dev/jdt/LongFromJSNIChecker.java
+++ b/dev/core/src/com/google/gwt/dev/jdt/LongFromJSNIChecker.java
@@ -136,8 +136,8 @@
     }
 
     /**
-     * Check whether the argument type is long or an array of (arrays of...)
-     * long. If the argument is <code>null</code>, returns <code>false</code>.
+     * Check whether the argument type is the <code>long</code> primitive
+     * type. If the argument is <code>null</code>, returns <code>false</code>.
      */
     private boolean containsLong(TypeBinding type) {
       if (type instanceof BaseTypeBinding) {
@@ -147,13 +147,6 @@
         }
       }
 
-      if (type instanceof ArrayBinding) {
-        ArrayBinding ab = (ArrayBinding) type;
-        if (containsLong(ab.elementsType())) {
-          return true;
-        }
-      }
-
       return false;
     }
 
diff --git a/dev/core/test/com/google/gwt/dev/jdt/LongFromJSNITest.java b/dev/core/test/com/google/gwt/dev/jdt/LongFromJSNITest.java
index fb1c5b2..d100f34 100644
--- a/dev/core/test/com/google/gwt/dev/jdt/LongFromJSNITest.java
+++ b/dev/core/test/com/google/gwt/dev/jdt/LongFromJSNITest.java
@@ -38,6 +38,11 @@
         "Referencing field 'Buggy.x': type 'long' is not safe to access in JSNI code");
   }
 
+  /**
+   * The proper behavior here is a close call. In hosted mode, Java arrays are
+   * completely unusable in JavaScript, so the current reasoning is to allow
+   * them.
+   */
   public void testLongArray() throws UnableToCompleteException {
     StringBuffer code = new StringBuffer();
     code.append("class Buggy {\n");
@@ -46,10 +51,7 @@
     code.append("    $wnd.alert(this.@Buggy::m()()); }-*/;\n");
     code.append("}\n");
 
-    shouldGenerateError(
-        code,
-        3,
-        "Referencing method \'Buggy.m\': return type 'long[]' is not safe to access in JSNI code");
+    shouldGenerateNoError(code);
   }
 
   public void testLongParameter() throws UnableToCompleteException {