From ae568a7f2d3663f94de52e83b4b6892c874f396b Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 29 May 2017 12:45:47 +0200 Subject: [PATCH] Add support for "parameters" flag --- .../compiler/CompilerConfiguration.java | 14 +++++++- .../compiler/eclipse/EclipseJavaCompiler.java | 5 +++ .../plexus/compiler/javac/JavacCompiler.java | 18 ++++++++++ .../javac/AbstractJavacCompilerTest.java | 34 +++++++++++++++---- 4 files changed, 64 insertions(+), 7 deletions(-) diff --git a/plexus-compiler-api/src/main/java/org/codehaus/plexus/compiler/CompilerConfiguration.java b/plexus-compiler-api/src/main/java/org/codehaus/plexus/compiler/CompilerConfiguration.java index d4c4c031..5c310d35 100644 --- a/plexus-compiler-api/src/main/java/org/codehaus/plexus/compiler/CompilerConfiguration.java +++ b/plexus-compiler-api/src/main/java/org/codehaus/plexus/compiler/CompilerConfiguration.java @@ -105,6 +105,8 @@ public class CompilerConfiguration private boolean verbose = false; + private boolean parameters; + /** * A build temporary directory, eg target/. *

@@ -564,7 +566,17 @@ public void setVerbose( boolean verbose ) this.verbose = verbose; } - public void setProc( String proc ) + public boolean isParameters() + { + return parameters; + } + + public void setParameters(boolean parameters) + { + this.parameters = parameters; + } + + public void setProc(String proc ) { this.proc = proc; } diff --git a/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java b/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java index a268f092..da0a991e 100644 --- a/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java +++ b/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java @@ -172,6 +172,11 @@ public CompilerResult performCompile( CompilerConfiguration config ) settings.put( CompilerOptions.OPTION_ReportDeprecation, CompilerOptions.IGNORE ); } + if ( config.isParameters() ) + { + settings.put( CompilerOptions.OPTION_MethodParametersAttribute, CompilerOptions.GENERATE ); + } + // ---------------------------------------------------------------------- // Set Eclipse-specific options // ---------------------------------------------------------------------- diff --git a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java index debb3eb8..cfb34356 100644 --- a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java +++ b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java @@ -309,6 +309,11 @@ public static String[] buildCompilerArguments( CompilerConfiguration config, Str args.add( "-verbose" ); } + if ( !isPreJava18(config) && config.isParameters() ) + { + args.add( "-parameters" ); + } + if ( config.isShowDeprecation() ) { args.add( "-deprecation" ); @@ -439,6 +444,19 @@ private static boolean isPreJava16( CompilerConfiguration config ) || v.startsWith( "1.1" ) || v.startsWith( "1.0" ); } + private static boolean isPreJava18( CompilerConfiguration config ) + { + String v = config.getCompilerVersion(); + + if ( v == null ) + { + return true; + } + + return v.startsWith( "1.7" ) || v.startsWith( "1.6" ) || v.startsWith( "1.5" ) || v.startsWith( "1.4" ) + || v.startsWith( "1.3" ) || v.startsWith( "1.2" ) || v.startsWith( "1.1" ) || v.startsWith( "1.0" ); + } + private static boolean suppressSource( CompilerConfiguration config ) { diff --git a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java index 8a1e7a62..92d742b3 100644 --- a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java +++ b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java @@ -104,7 +104,7 @@ public void testBuildCompilerArgs13() compilerConfiguration.setCompilerVersion( "1.3" ); - populateArguments( compilerConfiguration, expectedArguments, true, true ); + populateArguments( compilerConfiguration, expectedArguments, true, true, false ); internalTest( compilerConfiguration, expectedArguments ); } @@ -117,7 +117,7 @@ public void testBuildCompilerArgs14() compilerConfiguration.setCompilerVersion( "1.4" ); - populateArguments( compilerConfiguration, expectedArguments, false, false ); + populateArguments( compilerConfiguration, expectedArguments, false, false, false ); internalTest( compilerConfiguration, expectedArguments ); } @@ -130,7 +130,20 @@ public void testBuildCompilerArgs15() compilerConfiguration.setCompilerVersion( "1.5" ); - populateArguments( compilerConfiguration, expectedArguments, false, false ); + populateArguments( compilerConfiguration, expectedArguments, false, false, false ); + + internalTest( compilerConfiguration, expectedArguments ); + } + + public void testBuildCompilerArgs18() + { + List expectedArguments = new ArrayList(); + + CompilerConfiguration compilerConfiguration = new CompilerConfiguration(); + + compilerConfiguration.setCompilerVersion( "1.8" ); + + populateArguments( compilerConfiguration, expectedArguments, false, false, true ); internalTest( compilerConfiguration, expectedArguments ); } @@ -141,7 +154,7 @@ public void testBuildCompilerArgsUnspecifiedVersion() CompilerConfiguration compilerConfiguration = new CompilerConfiguration(); - populateArguments( compilerConfiguration, expectedArguments, false, false ); + populateArguments( compilerConfiguration, expectedArguments, false, false, false ); internalTest( compilerConfiguration, expectedArguments ); } @@ -156,7 +169,7 @@ public void testBuildCompilerDebugLevel() compilerConfiguration.setDebugLevel( "none" ); - populateArguments( compilerConfiguration, expectedArguments, false, false ); + populateArguments( compilerConfiguration, expectedArguments, false, false, false ); internalTest( compilerConfiguration, expectedArguments ); } @@ -320,7 +333,7 @@ public void testCommandLineTooLongWhenForking() */ private void populateArguments( CompilerConfiguration compilerConfiguration, List expectedArguments, - boolean suppressSourceVersion, boolean suppressEncoding ) + boolean suppressSourceVersion, boolean suppressEncoding, boolean parameters ) { // outputLocation @@ -371,6 +384,15 @@ private void populateArguments( CompilerConfiguration compilerConfiguration, Lis expectedArguments.add( "-g" ); } + // parameters + + compilerConfiguration.setParameters( true ); + + if (parameters) + { + expectedArguments.add( "-parameters" ); + } + // showDeprecation compilerConfiguration.setShowDeprecation( true );