NestBasedAccessControl Anonymous Inner class support
- Added tests for anonymous inner class
- Turns out anonymous inner classes worked out of the box
- Added a simpler test to debug simple cases
- change Nest tests packaging to follow convention
(all in package named nestHostExample instead of no package)
- change Java 11 tests build to avoid committing all class files
Bug: 130529338
Change-Id: Ic69b5aa730c6168e993e5deacf3f1b7b074196b4
diff --git a/src/test/examplesJava11/nestHostExample/BasicNestHostWithAnonymousInnerClass.java b/src/test/examplesJava11/nestHostExample/BasicNestHostWithAnonymousInnerClass.java
new file mode 100644
index 0000000..f97282c
--- /dev/null
+++ b/src/test/examplesJava11/nestHostExample/BasicNestHostWithAnonymousInnerClass.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package nestHostExample;
+
+public class BasicNestHostWithAnonymousInnerClass {
+
+ private String method() {
+ return "hostMethod";
+ }
+
+ private static String staticMethod() {
+ return "staticHostMethod";
+ }
+
+ private String field = "field";
+ private static String staticField = "staticField";
+
+ public static InterfaceForAnonymousClass createAnonymousNestedInstance() {
+ return new InterfaceForAnonymousClass() {
+ public String accessOuter(BasicNestHostWithAnonymousInnerClass o) {
+ return o.field
+ + o.staticField
+ + BasicNestHostWithAnonymousInnerClass.staticField
+ + o.method()
+ + o.staticMethod()
+ + BasicNestHostWithAnonymousInnerClass.staticMethod();
+ }
+ };
+ }
+
+ public interface InterfaceForAnonymousClass {
+ String accessOuter(BasicNestHostWithAnonymousInnerClass o);
+ }
+
+ public static void main(String[] args) {
+ BasicNestHostWithAnonymousInnerClass outer = new BasicNestHostWithAnonymousInnerClass();
+ InterfaceForAnonymousClass anonymousInner =
+ BasicNestHostWithAnonymousInnerClass.createAnonymousNestedInstance();
+ System.out.println(anonymousInner.accessOuter(outer));
+ }
+}