blob: 4da4b875fc12905d7e06fccfe9c4aadf67c39b8d [file] [log] [blame]
// Copyright (c) 2018, 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 com.android.tools.r8.naming.b72391662;
import com.android.tools.r8.naming.b72391662.subpackage.OtherPackageTestClass;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.function.Supplier;
public class TestMain extends Super {
private Object supplyNull() {
System.out.print("C");
return null;
}
private Object useSupplier(Supplier<Object> a) {
return a.get();
}
private static void printString(Supplier<String> stringSupplier) {
System.out.print(stringSupplier.get());
}
private static void printInteger(Integer i) {
System.out.print(i);
}
private static void printValue(Supplier<Interface> s) {
System.out.print(s.get().getValue());
}
private static void printNewArrayLength(IntFunction<Interface[]> s) {
System.out.print(s.apply(4).length);
}
public static void main(String[] args) {
// Test with an instance in this package.
TestClass instanceInThisPackage = new TestClass();
printString(TestClass::staticMethod);
printString(instanceInThisPackage::instanceMethod);
printValue(TestClass::new);
printNewArrayLength(TestClass[]::new);
printInteger(instanceInThisPackage.x());
// Test with an instance in another package.
OtherPackageTestClass instanceInOtherPackage = new OtherPackageTestClass();
printString(OtherPackageTestClass::staticMethod);
printString(instanceInOtherPackage::instanceMethod);
printValue(OtherPackageTestClass::new);
printNewArrayLength(OtherPackageTestClass[]::new);
printInteger(instanceInOtherPackage.x());
Function<Integer, Integer> lambda = x -> x + 2;
printInteger(lambda.apply(4));
List<Integer> list = new ArrayList<>();
list.add(5);
list.forEach(e -> { System.out.println(e + 2);});
instanceInThisPackage.useSupplier(instanceInThisPackage::supplyNull);
instanceInOtherPackage.useSupplier(instanceInOtherPackage::supplyNull);
TestMain instanceOfThisClass = new TestMain();
instanceOfThisClass.useSupplier(instanceOfThisClass::supplyNull);
System.out.println("");
}
}