Fix NPE compiling code with a constructor reference (Type::new).

Constructor references to constructors of local classes inside static
methods were not properly handlded.

Change-Id: I87c178acb7f6ee2be804b16fbb72545f24b3287a
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
index d2cb9b6..7cb8ef5 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
@@ -1820,7 +1820,7 @@
         // it's constructor invoked with an enclosing instance, Inner::new
         // Java8 doesn't allow the qualifified case, e.g. x.new Foo() -> x.Foo::new
         ReferenceBinding targetBinding = referredMethodBinding.declaringClass;
-        if (JdtUtil.isInnerClass(targetBinding)) {
+        if (targetBinding.syntheticEnclosingInstanceTypes() != null) {
           for (ReferenceBinding argType : targetBinding.syntheticEnclosingInstanceTypes()) {
             argType = (ReferenceBinding) argType.erasure();
             JExpression enclosingThisRef = resolveThisReference(info, argType, false, blockScope);
diff --git a/user/test-super/com/google/gwt/dev/jjs/super/com/google/gwt/dev/jjs/test/Java8Test.java b/user/test-super/com/google/gwt/dev/jjs/super/com/google/gwt/dev/jjs/test/Java8Test.java
index 6684445..e8aecbf 100644
--- a/user/test-super/com/google/gwt/dev/jjs/super/com/google/gwt/dev/jjs/test/Java8Test.java
+++ b/user/test-super/com/google/gwt/dev/jjs/super/com/google/gwt/dev/jjs/test/Java8Test.java
@@ -1703,5 +1703,19 @@
         (SubclassImplementingInterfaceWithOverlay) (Object) new int[]{1, 2, 3};
     assertEquals(3, object.len());
   }
+
+  interface Producer<T> {
+    T get();
+  }
+
+  private static Producer<Object> createInnerClassProducer() {
+    class InnerClass {
+    }
+    return (Producer) InnerClass::new;
+  }
+
+  public void testLocalClassConstructorReferenceInStaticMethod() {
+    assertTrue(createInnerClassProducer().get() != null);
+  }
 }
 
diff --git a/user/test/com/google/gwt/dev/jjs/test/Java8Test.java b/user/test/com/google/gwt/dev/jjs/test/Java8Test.java
index 3cf89d1..f9f945d 100644
--- a/user/test/com/google/gwt/dev/jjs/test/Java8Test.java
+++ b/user/test/com/google/gwt/dev/jjs/test/Java8Test.java
@@ -312,6 +312,10 @@
     assertFalse(isGwtSourceLevel8());
   }
 
+  public void testLocalClassConstructorReferenceInStaticMethod() {
+    assertFalse(isGwtSourceLevel8());
+  }
+
   private boolean isGwtSourceLevel8() {
     return JUnitShell.getCompilerOptions().getSourceLevel().compareTo(SourceLevel.JAVA8) >= 0;
   }