From 3973e39a4637be97a5579e7a657476e1a0b8d917 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Tue, 1 Feb 2022 12:45:45 +0100 Subject: Import types referenced in lambdas --- .../plugin/classanalysis/AnalyzeMethodBodyTest.java | 7 +++++++ .../yahoo/container/plugin/classanalysis/TestUtilities.java | 2 ++ .../plugin/classanalysis/sampleclasses/Interface3.java | 11 +++++++++++ .../plugin/classanalysis/sampleclasses/Methods.java | 12 ++++++++++++ 4 files changed, 32 insertions(+) create mode 100644 bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface3.java (limited to 'bundle-plugin/src/test') diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java index 4502f88d158..1bb6cb8976e 100644 --- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java @@ -7,6 +7,7 @@ import com.yahoo.container.plugin.classanalysis.sampleclasses.Derived; import com.yahoo.container.plugin.classanalysis.sampleclasses.Dummy; import com.yahoo.container.plugin.classanalysis.sampleclasses.Fields; import com.yahoo.container.plugin.classanalysis.sampleclasses.Interface1; +import com.yahoo.container.plugin.classanalysis.sampleclasses.Interface3; import com.yahoo.container.plugin.classanalysis.sampleclasses.Methods; import org.junit.Test; @@ -24,6 +25,7 @@ import static org.junit.Assert.assertTrue; * @author Tony Vaagenes */ public class AnalyzeMethodBodyTest { + @Test public void require_that_class_of_locals_are_included() { assertTrue(analyzeClass(Methods.class).getReferencedClasses().contains(name(Base.class))); @@ -64,6 +66,11 @@ public class AnalyzeMethodBodyTest { assertTrue(analyzeClass(Methods.class).getReferencedClasses().contains(name(Dummy.class))); } + @Test + public void require_that_functional_interface_usage_is_included() { + assertTrue(analyzeClass(Methods.class).getReferencedClasses().contains(name(Interface3.class))); + } + @Test public void require_that_class_owning_method_handler_is_included() { assertTrue(analyzeClass(Methods.class).getReferencedClasses().contains(name(ClassWithMethod.class))); diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/TestUtilities.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/TestUtilities.java index 9eacc0625b5..c2567e96ed9 100644 --- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/TestUtilities.java +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/TestUtilities.java @@ -8,6 +8,7 @@ import java.io.File; * @author ollivir */ public class TestUtilities { + public static ClassFileMetaData analyzeClass(Class clazz) { return Analyze.analyzeClass(classFile(name(clazz))); } @@ -19,4 +20,5 @@ public class TestUtilities { public static String name(Class clazz) { return clazz.getName(); } + } diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface3.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface3.java new file mode 100644 index 00000000000..d492cd6ed50 --- /dev/null +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface3.java @@ -0,0 +1,11 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.container.plugin.classanalysis.sampleclasses; + +/** + * Input for class analysis tests. + * + * @author bratseth + */ +public interface Interface3 extends java.util.function.Supplier { + +} diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Methods.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Methods.java index fcc7057dac8..3fba4b3381b 100644 --- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Methods.java +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Methods.java @@ -3,6 +3,7 @@ package com.yahoo.container.plugin.classanalysis.sampleclasses; import java.util.List; import java.util.Map; +import java.util.function.Supplier; /** * Input for class analysis tests. @@ -10,6 +11,7 @@ import java.util.Map; */ @SuppressWarnings("unused") public class Methods { + public void method1() { Base b = new Base(); System.out.println(Fields.field2.size()); @@ -29,5 +31,15 @@ public class Methods { Derived d = new Derived(); } + public void method3() { + var result = methodTakingFunctionalArgument((Interface3)() -> "hello"); + System.out.println(result); + } + + public String methodTakingFunctionalArgument(Supplier function) { + return function.get(); + } + public void methodTakingGenericArgument(Map> map) {} + } -- cgit v1.2.3