From ee59fae15f89f4e0858d3d8af15e968af4475454 Mon Sep 17 00:00:00 2001 From: Chongyun Lee <45286352+licy183@users.noreply.github.com> Date: Wed, 2 Oct 2024 23:00:35 +0800 Subject: [PATCH] Add option `-proc:full` to `javac` (#5) Cherry-pick openjdk/jdk17u@561f956 and openjdk/jdk17u@6d8febb. * 8308245: Add -proc:full to describe current default annotation processing policy Backport-of: 42ecc8a37ffc7e4ad7beb49cac7d821c00a5568e * 8309870: Using -proc:full should be considered requesting explicit annotation processing Backport-of: 3ce1240ca1b4139980444c171e317f4bfeff9314 --------- Co-authored-by: Andrew Lu --- .../sun/tools/javac/main/JavaCompiler.java | 5 ++- .../com/sun/tools/javac/main/Option.java | 9 +++- .../environment/round/TestContext.java | 2 +- .../processing/options/TestProcOption.java | 41 +++++++++++++++++++ 4 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 test/langtools/tools/javac/processing/options/TestProcOption.java diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java index 1b8b7077ed8..2a8807b126b 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1270,7 +1270,10 @@ static boolean explicitAnnotationProcessingRequested(Options options) { options.isSet(PROCESSOR_PATH) || options.isSet(PROCESSOR_MODULE_PATH) || options.isSet(PROC, "only") || + options.isSet(PROC, "full") || + options.isSet(A) || options.isSet(XPRINT); + // Skipping -XprintRounds and -XprintProcessorInfo } public void setDeferredDiagnosticHandler(Log.DeferredDiagnosticHandler deferredDiagnosticHandler) { diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java index a6d050b0a6f..f88a328ca46 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -83,6 +83,11 @@ * {@code handleOption} then calls {@link #process process} providing a suitable * {@link OptionHelper} to provide access the compiler state. * + * + *

Maintenance note: when adding new annotation processing related + * options, the list of options regarded as requesting explicit + * annotation processing in JavaCompiler should be updated. + * *

This is NOT part of any supported API. * If you write code that depends on this, you do so at your own * risk. This code and its internal interfaces are subject to change @@ -285,7 +290,7 @@ public void process(OptionHelper helper, String option, String arg) throws Inval } }, - PROC("-proc:", "opt.proc.none.only", STANDARD, BASIC, ONEOF, "none", "only"), + PROC("-proc:", "opt.proc.none.only", STANDARD, BASIC, ONEOF, "none", "only", "full"), PROCESSOR("-processor", "opt.arg.class.list", "opt.processor", STANDARD, BASIC), diff --git a/test/langtools/tools/javac/processing/environment/round/TestContext.java b/test/langtools/tools/javac/processing/environment/round/TestContext.java index f572d2d9c73..4d0b1674ecc 100644 --- a/test/langtools/tools/javac/processing/environment/round/TestContext.java +++ b/test/langtools/tools/javac/processing/environment/round/TestContext.java @@ -31,7 +31,7 @@ * jdk.compiler/com.sun.tools.javac.processing * jdk.compiler/com.sun.tools.javac.util * @build JavacTestingAbstractProcessor TestContext - * @compile/process -processor TestContext -XprintRounds TestContext + * @compile/process -processor TestContext -XprintRounds -proc:full TestContext */ import java.io.*; diff --git a/test/langtools/tools/javac/processing/options/TestProcOption.java b/test/langtools/tools/javac/processing/options/TestProcOption.java new file mode 100644 index 00000000000..882077a00c3 --- /dev/null +++ b/test/langtools/tools/javac/processing/options/TestProcOption.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8308245 + * @summary Test trivial handling of -proc:full option + * @compile -proc:full TestProcOption.java + * @run main TestProcOption + */ + +/* + * The test verifies that compilation takes place when -proc:full is used. + */ +public class TestProcOption { + private TestProcOption(){}; + + public static void main(String... args) { + ; // do nothing + } +}