This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new 4ed12ad GROOVY-9368: joint compilation options are null by default
4ed12ad is described below
commit 4ed12ade3866662ea3cf5c9dc88f7277234c2415
Author: Eric Milles <[email protected]>
AuthorDate: Sun Jan 19 16:07:11 2020 -0600
GROOVY-9368: joint compilation options are null by default
---
.../groovy/control/CompilerConfiguration.java | 186 ++++++++++-----------
.../groovy/control/CompilerConfigurationTest.java | 186 +++++++++------------
.../src/test/groovy/groovy/ant/AntTestCase.groovy | 7 +-
.../test/groovy/groovy/ant/Groovy9352Test.groovy | 28 ++--
4 files changed, 188 insertions(+), 219 deletions(-)
diff --git
a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
index 214bb98..39dd3f5 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
@@ -144,12 +144,12 @@ public class CompilerConfiguration {
@Override
public Set<String> getDisabledGlobalASTTransformations() {
- return Collections.emptySet();
+ return
Optional.ofNullable(super.getDisabledGlobalASTTransformations()).map(Collections::unmodifiableSet).orElse(null);
}
@Override
public Map<String, Object> getJointCompilationOptions() {
- return
Collections.unmodifiableMap(super.getJointCompilationOptions());
+ return
Optional.ofNullable(super.getJointCompilationOptions()).map(Collections::unmodifiableMap).orElse(null);
}
@Override
@@ -163,122 +163,122 @@ public class CompilerConfiguration {
}
@Override
- public void setBytecodePostprocessor(BytecodeProcessor
bytecodePostprocessor) {
+ public void setBytecodePostprocessor(final BytecodeProcessor
bytecodePostprocessor) {
throw new UnsupportedOperationException();
}
@Override
- public void setClasspath(String classpath) {
+ public void setClasspath(final String classpath) {
throw new UnsupportedOperationException();
}
@Override
- public void setClasspathList(List<String> parts) {
+ public void setClasspathList(final List<String> parts) {
throw new UnsupportedOperationException();
}
@Override
- public CompilerConfiguration
addCompilationCustomizers(CompilationCustomizer... customizers) {
+ public CompilerConfiguration addCompilationCustomizers(final
CompilationCustomizer... customizers) {
throw new UnsupportedOperationException();
}
@Override
- public void setDebug(boolean debug) {
+ public void setDebug(final boolean debug) {
throw new UnsupportedOperationException();
}
@Override
- public void setDefaultScriptExtension(String defaultScriptExtension) {
+ public void setDefaultScriptExtension(final String
defaultScriptExtension) {
throw new UnsupportedOperationException();
}
@Override
- public void setDisabledGlobalASTTransformations(Set<String>
disabledGlobalASTTransformations) {
+ public void setDisabledGlobalASTTransformations(final Set<String>
disabledGlobalASTTransformations) {
throw new UnsupportedOperationException();
}
@Override
- public void setJointCompilationOptions(Map<String, Object> options) {
+ public void setJointCompilationOptions(final Map<String, Object>
options) {
throw new UnsupportedOperationException();
}
@Override
- public void setMinimumRecompilationInterval(int time) {
+ public void setMinimumRecompilationInterval(final int time) {
throw new UnsupportedOperationException();
}
@Override
- public void setOptimizationOptions(Map<String, Boolean> options) {
+ public void setOptimizationOptions(final Map<String, Boolean> options)
{
throw new UnsupportedOperationException();
}
@Override
- public void setOutput(PrintWriter output) {
+ public void setOutput(final PrintWriter output) {
throw new UnsupportedOperationException();
}
@Override
- public void setParameters(boolean parameters) {
+ public void setParameters(final boolean parameters) {
throw new UnsupportedOperationException();
}
@Override
- public void setPluginFactory(ParserPluginFactory pluginFactory) {
+ public void setPluginFactory(final ParserPluginFactory pluginFactory) {
throw new UnsupportedOperationException();
}
@Override
- public void setPreviewFeatures(boolean previewFeatures) {
+ public void setPreviewFeatures(final boolean previewFeatures) {
throw new UnsupportedOperationException();
}
@Override
- public void setRecompileGroovySource(boolean recompile) {
+ public void setRecompileGroovySource(final boolean recompile) {
throw new UnsupportedOperationException();
}
@Override
- public void setScriptBaseClass(String scriptBaseClass) {
+ public void setScriptBaseClass(final String scriptBaseClass) {
throw new UnsupportedOperationException();
}
@Override
- public void setScriptExtensions(Set<String> scriptExtensions) {
+ public void setScriptExtensions(final Set<String> scriptExtensions) {
throw new UnsupportedOperationException();
}
@Override
- public void setSourceEncoding(String encoding) {
+ public void setSourceEncoding(final String encoding) {
throw new UnsupportedOperationException();
}
@Override
- public void setTargetBytecode(String version) {
+ public void setTargetBytecode(final String version) {
throw new UnsupportedOperationException();
}
@Override
- public void setTargetDirectory(File directory) {
+ public void setTargetDirectory(final File directory) {
throw new UnsupportedOperationException();
}
@Override
- public void setTargetDirectory(String directory) {
+ public void setTargetDirectory(final String directory) {
throw new UnsupportedOperationException();
}
@Override
- public void setTolerance(int tolerance) {
+ public void setTolerance(final int tolerance) {
throw new UnsupportedOperationException();
}
@Override
- public void setVerbose(boolean verbose) {
+ public void setVerbose(final boolean verbose) {
throw new UnsupportedOperationException();
}
@Override
- public void setWarningLevel(int level) {
+ public void setWarningLevel(final int level) {
throw new UnsupportedOperationException();
}
};
@@ -343,7 +343,7 @@ public class CompilerConfiguration {
/**
* extensions used to find a groovy files
*/
- private Set<String> scriptExtensions = new LinkedHashSet<String>();
+ private Set<String> scriptExtensions = new LinkedHashSet<>();
/**
* if set to true recompilation is enabled
@@ -375,7 +375,7 @@ public class CompilerConfiguration {
*/
private Map<String, Boolean> optimizationOptions;
- private final List<CompilationCustomizer> compilationCustomizers = new
LinkedList<CompilationCustomizer>();
+ private final List<CompilationCustomizer> compilationCustomizers = new
LinkedList<>();
/**
* Global AST transformations which should not be loaded even if they are
@@ -416,10 +416,9 @@ public class CompilerConfiguration {
* </blockquote>
*/
public CompilerConfiguration() {
- // Set in safe defaults
warningLevel = WarningMessage.LIKELY_ERRORS;
- classpath = new LinkedList<String>();
- parameters = getSystemPropertySafe("groovy.parameters") != null;
+ classpath = new LinkedList<>();
+ parameters =
Optional.ofNullable(getSystemPropertySafe("groovy.parameters")).map(Boolean::valueOf).orElse(Boolean.FALSE);
tolerance = 10;
minimumRecompilationInterval = 100;
@@ -428,7 +427,6 @@ public class CompilerConfiguration {
previewFeatures = getSystemPropertySafe("groovy.preview.features") !=
null;
defaultScriptExtension =
getSystemPropertySafe("groovy.default.scriptExtension", ".groovy");
- // Source file encoding
String encoding = getSystemPropertySafe("file.encoding",
DEFAULT_SOURCE_ENCODING);
encoding = getSystemPropertySafe("groovy.source.encoding", encoding);
setSourceEncodingOrDefault(encoding);
@@ -440,25 +438,17 @@ public class CompilerConfiguration {
handleOptimizationOption(optimizationOptions, GROOVYDOC,
"groovy.attach.groovydoc");
handleOptimizationOption(optimizationOptions, RUNTIME_GROOVYDOC,
"groovy.attach.runtime.groovydoc");
- jointCompilationOptions = new HashMap<>(4);
- handleJointCompilationOption(jointCompilationOptions, MEM_STUB,
"groovy.generate.stub.in.memory");
- }
-
- private void handleOptimizationOption(Map<String, Boolean> options, String
optionName, String sysOptionName) {
- String propValue = getSystemPropertySafe(sysOptionName);
- boolean optionEnabled = propValue == null
- ? (DEFAULT != null &&
Boolean.TRUE.equals(DEFAULT.getOptimizationOptions().get(optionName)))
- : Boolean.parseBoolean(propValue);
-
- if (optionEnabled) {
- options.put(optionName, Boolean.TRUE);
+ if
(Optional.ofNullable(getSystemPropertySafe("groovy.generate.stub.in.memory"))
+ .map(Boolean::valueOf).orElse(DEFAULT != null &&
DEFAULT.isMemStubEnabled()).booleanValue()) {
+ jointCompilationOptions = new HashMap<>();
+ jointCompilationOptions.put(MEM_STUB, Boolean.TRUE);
}
}
- private void handleJointCompilationOption(Map<String, Object> options,
String optionName, String sysOptionName) {
+ private void handleOptimizationOption(final Map<String, Boolean> options,
final String optionName, final String sysOptionName) {
String propValue = getSystemPropertySafe(sysOptionName);
boolean optionEnabled = propValue == null
- ? (DEFAULT != null &&
Boolean.TRUE.equals(DEFAULT.getJointCompilationOptions().get(optionName)))
+ ? (DEFAULT != null &&
Boolean.TRUE.equals(DEFAULT.getOptimizationOptions().get(optionName)))
: Boolean.parseBoolean(propValue);
if (optionEnabled) {
@@ -482,7 +472,7 @@ public class CompilerConfiguration {
*
* @param configuration The configuration to copy.
*/
- public CompilerConfiguration(CompilerConfiguration configuration) {
+ public CompilerConfiguration(final CompilerConfiguration configuration) {
setWarningLevel(configuration.getWarningLevel());
setTargetDirectory(configuration.getTargetDirectory());
setClasspathList(new LinkedList<String>(configuration.getClasspath()));
@@ -499,13 +489,13 @@ public class CompilerConfiguration {
setSourceEncoding(configuration.getSourceEncoding());
Map<String, Object> jointCompilationOptions =
configuration.getJointCompilationOptions();
if (jointCompilationOptions != null) {
- jointCompilationOptions = new HashMap<String,
Object>(jointCompilationOptions);
+ jointCompilationOptions = new HashMap<>(jointCompilationOptions);
}
setJointCompilationOptions(jointCompilationOptions);
setPluginFactory(configuration.getPluginFactory());
setDisabledGlobalASTTransformations(configuration.getDisabledGlobalASTTransformations());
- setScriptExtensions(new
LinkedHashSet<String>(configuration.getScriptExtensions()));
- setOptimizationOptions(new HashMap<String,
Boolean>(configuration.getOptimizationOptions()));
+ setScriptExtensions(new
LinkedHashSet<>(configuration.getScriptExtensions()));
+ setOptimizationOptions(new
HashMap<>(configuration.getOptimizationOptions()));
setBytecodePostprocessor(configuration.getBytecodePostprocessor());
}
@@ -560,7 +550,7 @@ public class CompilerConfiguration {
*
* @param configuration The properties to get flag values from.
*/
- public CompilerConfiguration(Properties configuration) throws
ConfigurationException {
+ public CompilerConfiguration(final Properties configuration) throws
ConfigurationException {
this();
configure(configuration);
}
@@ -571,7 +561,7 @@ public class CompilerConfiguration {
* @param bytecodeVersion The parameter can take one of the values in
{@link #ALLOWED_JDKS}.
* @return true if the bytecode version is JDK 1.5+
*/
- public static boolean isPostJDK5(String bytecodeVersion) {
+ public static boolean isPostJDK5(final String bytecodeVersion) {
return new BigDecimal(bytecodeVersion).compareTo(new BigDecimal(JDK5))
>= 0;
}
@@ -581,7 +571,7 @@ public class CompilerConfiguration {
* @param bytecodeVersion The parameter can take one of the values in
{@link #ALLOWED_JDKS}.
* @return true if the bytecode version is JDK 1.7+
*/
- public static boolean isPostJDK7(String bytecodeVersion) {
+ public static boolean isPostJDK7(final String bytecodeVersion) {
return new BigDecimal(bytecodeVersion).compareTo(new BigDecimal(JDK7))
>= 0;
}
@@ -591,7 +581,7 @@ public class CompilerConfiguration {
* @param bytecodeVersion The parameter can take one of the values in
{@link #ALLOWED_JDKS}.
* @return true if the bytecode version is JDK 1.8+
*/
- public static boolean isPostJDK8(String bytecodeVersion) {
+ public static boolean isPostJDK8(final String bytecodeVersion) {
return new BigDecimal(bytecodeVersion).compareTo(new BigDecimal(JDK8))
>= 0;
}
@@ -601,7 +591,7 @@ public class CompilerConfiguration {
* @param bytecodeVersion The parameter can take one of the values in
{@link #ALLOWED_JDKS}.
* @return true if the bytecode version is JDK 9.0+
*/
- public static boolean isPostJDK9(String bytecodeVersion) {
+ public static boolean isPostJDK9(final String bytecodeVersion) {
return new BigDecimal(bytecodeVersion).compareTo(new BigDecimal(JDK9))
>= 0;
}
@@ -610,7 +600,7 @@ public class CompilerConfiguration {
* For a list of available properties look at {@link
#CompilerConfiguration(Properties)}.
* @param configuration The properties to get flag values from.
*/
- public void configure(Properties configuration) throws
ConfigurationException {
+ public void configure(final Properties configuration) throws
ConfigurationException {
String text;
int numeric;
@@ -694,7 +684,7 @@ public class CompilerConfiguration {
text =
configuration.getProperty("groovy.disabled.global.ast.transformations");
if (text != null) {
String[] classNames = text.split(",\\s*}");
- Set<String> blacklist = new
HashSet<String>(Arrays.asList(classNames));
+ Set<String> blacklist = new HashSet<>(Arrays.asList(classNames));
setDisabledGlobalASTTransformations(blacklist);
}
}
@@ -710,11 +700,10 @@ public class CompilerConfiguration {
/**
* Sets the warning level. See {@link WarningMessage} for level details.
*/
- public void setWarningLevel(int level) {
+ public void setWarningLevel(final int level) {
if (level < WarningMessage.NONE || level > WarningMessage.PARANOIA) {
this.warningLevel = WarningMessage.LIKELY_ERRORS;
- }
- else {
+ } else {
this.warningLevel = level;
}
}
@@ -729,13 +718,12 @@ public class CompilerConfiguration {
/**
* Sets the encoding to be used when reading source files.
*/
- public void setSourceEncoding(String encoding) {
+ public void setSourceEncoding(final String encoding) {
setSourceEncodingOrDefault(encoding);
}
- private void setSourceEncodingOrDefault(String encoding) {
- if (encoding == null) encoding = DEFAULT_SOURCE_ENCODING;
- this.sourceEncoding = encoding;
+ private void setSourceEncodingOrDefault(final String encoding) {
+ this.sourceEncoding =
Optional.ofNullable(encoding).orElse(DEFAULT_SOURCE_ENCODING);
}
/**
@@ -752,7 +740,7 @@ public class CompilerConfiguration {
* @deprecated not used anymore, has no effect
*/
@Deprecated
- public void setOutput(PrintWriter output) {
+ public void setOutput(final PrintWriter output) {
if (output == null) {
this.output = new PrintWriter(NullWriter.DEFAULT);
} else {
@@ -770,11 +758,11 @@ public class CompilerConfiguration {
/**
* Sets the target directory.
*/
- public void setTargetDirectory(String directory) {
+ public void setTargetDirectory(final String directory) {
setTargetDirectorySafe(directory);
}
- private void setTargetDirectorySafe(String directory) {
+ private void setTargetDirectorySafe(final String directory) {
if (directory != null && directory.length() > 0) {
this.targetDirectory = new File(directory);
} else {
@@ -785,7 +773,7 @@ public class CompilerConfiguration {
/**
* Sets the target directory.
*/
- public void setTargetDirectory(File directory) {
+ public void setTargetDirectory(final File directory) {
this.targetDirectory = directory;
}
@@ -799,8 +787,8 @@ public class CompilerConfiguration {
/**
* Sets the classpath.
*/
- public void setClasspath(String classpath) {
- this.classpath = new LinkedList<String>();
+ public void setClasspath(final String classpath) {
+ this.classpath = new LinkedList<>();
StringTokenizer tokenizer = new StringTokenizer(classpath,
File.pathSeparator);
while (tokenizer.hasMoreTokens()) {
this.classpath.add(tokenizer.nextToken());
@@ -811,8 +799,8 @@ public class CompilerConfiguration {
* sets the classpath using a list of Strings
* @param parts list of strings containing the classpath parts
*/
- public void setClasspathList(List<String> parts) {
- this.classpath = new LinkedList<String>(parts);
+ public void setClasspathList(final List<String> parts) {
+ this.classpath = new LinkedList<>(parts);
}
/**
@@ -825,7 +813,7 @@ public class CompilerConfiguration {
/**
* Turns verbose operation on or off.
*/
- public void setVerbose(boolean verbose) {
+ public void setVerbose(final boolean verbose) {
this.verbose = verbose;
}
@@ -839,7 +827,7 @@ public class CompilerConfiguration {
/**
* Turns debugging operation on or off.
*/
- public void setDebug(boolean debug) {
+ public void setDebug(final boolean debug) {
this.debug = debug;
}
@@ -853,7 +841,7 @@ public class CompilerConfiguration {
/**
* Turns parameter metadata generation on or off.
*/
- public void setParameters(boolean parameters) {
+ public void setParameters(final boolean parameters) {
this.parameters = parameters;
}
@@ -869,7 +857,7 @@ public class CompilerConfiguration {
* non-fatal errors (per unit) that should be tolerated before
* compilation is aborted.
*/
- public void setTolerance(int tolerance) {
+ public void setTolerance(final int tolerance) {
this.tolerance = tolerance;
}
@@ -885,7 +873,7 @@ public class CompilerConfiguration {
* Sets the name of the base class for scripts. It must be a subclass
* of Script.
*/
- public void setScriptBaseClass(String scriptBaseClass) {
+ public void setScriptBaseClass(final String scriptBaseClass) {
this.scriptBaseClass = scriptBaseClass;
}
@@ -896,25 +884,23 @@ public class CompilerConfiguration {
return pluginFactory;
}
- public void setPluginFactory(ParserPluginFactory pluginFactory) {
+ public void setPluginFactory(final ParserPluginFactory pluginFactory) {
this.pluginFactory = pluginFactory;
}
- public void setScriptExtensions(Set<String> scriptExtensions) {
- if(scriptExtensions == null) scriptExtensions = new
LinkedHashSet<String>();
- this.scriptExtensions = scriptExtensions;
+ public void setScriptExtensions(final Set<String> scriptExtensions) {
+ this.scriptExtensions =
Optional.ofNullable(scriptExtensions).orElseGet(() -> new LinkedHashSet<>());
}
public Set<String> getScriptExtensions() {
- if(scriptExtensions == null || scriptExtensions.isEmpty()) {
+ if (scriptExtensions == null || scriptExtensions.isEmpty()) {
/*
* this happens
* * when groovyc calls FileSystemCompiler in forked mode, or
* * when FileSystemCompiler is run from the command line
directly, or
* * when groovy was not started using groovyc or
FileSystemCompiler either
*/
- scriptExtensions = SourceExtensionHandler.getRegisteredExtensions(
- this.getClass().getClassLoader());
+ scriptExtensions =
SourceExtensionHandler.getRegisteredExtensions(getClass().getClassLoader());
}
return scriptExtensions;
}
@@ -923,37 +909,37 @@ public class CompilerConfiguration {
return defaultScriptExtension;
}
- public void setDefaultScriptExtension(String defaultScriptExtension) {
+ public void setDefaultScriptExtension(final String defaultScriptExtension)
{
this.defaultScriptExtension = defaultScriptExtension;
}
- public void setRecompileGroovySource(boolean recompile) {
- recompileGroovySource = recompile;
- }
-
- public boolean getRecompileGroovySource(){
+ public boolean getRecompileGroovySource() {
return recompileGroovySource;
}
- public void setMinimumRecompilationInterval(int time) {
- minimumRecompilationInterval = Math.max(0,time);
+ public void setRecompileGroovySource(final boolean recompile) {
+ recompileGroovySource = recompile;
}
public int getMinimumRecompilationInterval() {
return minimumRecompilationInterval;
}
+ public void setMinimumRecompilationInterval(final int time) {
+ minimumRecompilationInterval = Math.max(0,time);
+ }
+
/**
* Sets the bytecode compatibility level. The parameter can take one of
the values
* in {@link #ALLOWED_JDKS}.
*
* @param version the bytecode compatibility level
*/
- public void setTargetBytecode(String version) {
+ public void setTargetBytecode(final String version) {
setTargetBytecodeIfValid(version);
}
- private void setTargetBytecodeIfValid(String version) {
+ private void setTargetBytecodeIfValid(final String version) {
if (JDK_TO_BYTECODE_VERSION_MAP.containsKey(version)) {
this.targetBytecode = version;
}
@@ -983,7 +969,7 @@ public class CompilerConfiguration {
*
* @param previewFeatures whether to support preview features
*/
- public void setPreviewFeatures(boolean previewFeatures) {
+ public void setPreviewFeatures(final boolean previewFeatures) {
this.previewFeatures = previewFeatures;
}
@@ -1004,7 +990,7 @@ public class CompilerConfiguration {
* Using null will disable joint compilation.
* @param options the options
*/
- public void setJointCompilationOptions(Map<String, Object> options) {
+ public void setJointCompilationOptions(final Map<String, Object> options) {
jointCompilationOptions = options;
}
@@ -1024,7 +1010,7 @@ public class CompilerConfiguration {
* @param options the options.
* @throws IllegalArgumentException if the options are null
*/
- public void setOptimizationOptions(Map<String, Boolean> options) {
+ public void setOptimizationOptions(final Map<String, Boolean> options) {
if (options == null) throw new IllegalArgumentException("provided
option map must not be null");
optimizationOptions = options;
}
@@ -1035,7 +1021,7 @@ public class CompilerConfiguration {
* @param customizers the list of customizers to be added
* @return this configuration instance
*/
- public CompilerConfiguration
addCompilationCustomizers(CompilationCustomizer... customizers) {
+ public CompilerConfiguration addCompilationCustomizers(final
CompilationCustomizer... customizers) {
if (customizers == null) throw new IllegalArgumentException("provided
customizers list must not be null");
Collections.addAll(compilationCustomizers, customizers);
return this;
@@ -1111,7 +1097,7 @@ public class CompilerConfiguration {
* Checks if in-memory stub creation is enabled.
*/
public boolean isMemStubEnabled() {
- Object memStubEnabled = getJointCompilationOptions().get(MEM_STUB);
- return Optional.ofNullable(memStubEnabled).map(value ->
Boolean.parseBoolean(value.toString())).orElse(Boolean.FALSE).booleanValue();
+ return Optional.ofNullable(getJointCompilationOptions()).map(opts ->
opts.get(MEM_STUB))
+
.map(Object::toString).map(Boolean::valueOf).orElse(Boolean.FALSE).booleanValue();
}
}
diff --git
a/src/test/org/codehaus/groovy/control/CompilerConfigurationTest.java
b/src/test/org/codehaus/groovy/control/CompilerConfigurationTest.java
index 411aaad..c29e973 100644
--- a/src/test/org/codehaus/groovy/control/CompilerConfigurationTest.java
+++ b/src/test/org/codehaus/groovy/control/CompilerConfigurationTest.java
@@ -18,65 +18,59 @@
*/
package org.codehaus.groovy.control;
-import groovy.test.GroovyTestCase;
import org.codehaus.groovy.control.messages.WarningMessage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
import java.io.File;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.Collections;
import java.util.Properties;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
/**
* Make sure CompilerConfiguration works.
*/
-public class CompilerConfigurationTest extends GroovyTestCase {
- Properties savedProperties;
+public final class CompilerConfigurationTest {
- // Use setUp/tearDown to avoid mucking with system properties for other
tests...
+ private Properties savedProperties;
+ @Before
public void setUp() {
savedProperties = System.getProperties();
System.setProperties(new Properties(savedProperties));
}
+ @After
public void tearDown() {
System.setProperties(savedProperties);
}
+ @Test
public void testDefaultConstructor() {
- final CompilerConfiguration config = CompilerConfiguration.DEFAULT;
+ CompilerConfiguration config = CompilerConfiguration.DEFAULT;
assertEquals(WarningMessage.LIKELY_ERRORS, config.getWarningLevel());
assertEquals(Boolean.getBoolean("groovy.output.debug"),
config.getDebug());
assertEquals(Boolean.getBoolean("groovy.output.verbose"),
config.getVerbose());
- assertEquals(false, config.getDebug());
- assertEquals(false, config.getVerbose());
assertEquals(10, config.getTolerance());
assertEquals(100, config.getMinimumRecompilationInterval());
- assertNull(config.getScriptBaseClass());
- assertEquals(getSystemEncoding(), config.getSourceEncoding());
- assertEquals(getVMVersion(), config.getTargetBytecode());
- assertEquals(false, config.getRecompileGroovySource());
- {
- final List listCP = config.getClasspath();
- assertNotNull(listCP);
- assertEquals(0, listCP.size());
- }
- assertNull(config.getTargetDirectory());
+ assertEquals(System.getProperty("file.encoding",
CompilerConfiguration.DEFAULT_SOURCE_ENCODING), config.getSourceEncoding());
+ assertEquals(CompilerConfiguration.JDK8, config.getTargetBytecode());
+ assertEquals(Boolean.FALSE, config.getRecompileGroovySource());
+ assertEquals(Collections.emptyList(), config.getClasspath());
assertEquals(".groovy", config.getDefaultScriptExtension());
- assertTrue(0 == config.getJointCompilationOptions().size());
+ assertEquals(Collections.emptyMap(), config.getOptimizationOptions());
+ assertNull(config.getJointCompilationOptions());
assertNotNull(config.getPluginFactory());
+ assertNull(config.getScriptBaseClass());
+ assertNull(config.getTargetDirectory());
}
- private String getSystemEncoding() {
- return System.getProperty("file.encoding",
CompilerConfiguration.DEFAULT_SOURCE_ENCODING);
- }
-
- private static String getVMVersion() {
- return CompilerConfiguration.JDK8;
- }
-
+ @Test
public void testSetViaSystemProperties() {
System.setProperty("groovy.warnings", "PaRaNoiA");
System.setProperty("groovy.output.verbose", "trUE");
@@ -84,31 +78,28 @@ public class CompilerConfigurationTest extends
GroovyTestCase {
assertEquals("PaRaNoiA", System.getProperty("groovy.warnings"));
- final CompilerConfiguration config = new
CompilerConfiguration(System.getProperties());
+ CompilerConfiguration config = new
CompilerConfiguration(System.getProperties());
assertEquals(WarningMessage.PARANOIA, config.getWarningLevel());
- assertEquals(false, config.getDebug());
- assertEquals(true, config.getVerbose());
+ assertEquals(Boolean.FALSE, config.getDebug());
+ assertEquals(Boolean.TRUE, config.getVerbose());
assertEquals(10, config.getTolerance());
assertEquals(867892345, config.getMinimumRecompilationInterval());
- assertNull(config.getScriptBaseClass());
- assertEquals(getSystemEncoding(), config.getSourceEncoding());
- assertEquals(getVMVersion(), config.getTargetBytecode());
- assertEquals(false, config.getRecompileGroovySource());
- {
- final List listCP = config.getClasspath();
- assertNotNull(listCP);
- assertEquals(0, listCP.size());
- }
- assertNull(config.getTargetDirectory());
+ assertEquals(CompilerConfiguration.DEFAULT.getSourceEncoding(),
config.getSourceEncoding());
+ assertEquals(CompilerConfiguration.DEFAULT.getTargetBytecode(),
config.getTargetBytecode());
+ assertEquals(Boolean.FALSE, config.getRecompileGroovySource());
+ assertEquals(Collections.emptyList(), config.getClasspath());
assertEquals(".groovy", config.getDefaultScriptExtension());
- assertTrue(0 == config.getJointCompilationOptions().size());
+ assertEquals(Collections.emptyMap(), config.getOptimizationOptions());
+ assertNull(config.getJointCompilationOptions());
assertNotNull(config.getPluginFactory());
+ assertNull(config.getScriptBaseClass());
+ assertNull(config.getTargetDirectory());
}
+ @Test
public void testCopyConstructor1() {
- final CompilerConfiguration init = new CompilerConfiguration();
-
+ CompilerConfiguration init = new CompilerConfiguration();
init.setWarningLevel(WarningMessage.POSSIBLE_ERRORS);
init.setDebug(true);
init.setParameters(true);
@@ -117,64 +108,55 @@ public class CompilerConfigurationTest extends
GroovyTestCase {
init.setMinimumRecompilationInterval(234);
init.setScriptBaseClass("blarg.foo.WhatSit");
init.setSourceEncoding("LEAD-123");
- init.setTargetBytecode(CompilerConfiguration.POST_JDK5);
+ init.setTargetBytecode(CompilerConfiguration.JDK5);
init.setRecompileGroovySource(true);
init.setClasspath("File1" + File.pathSeparator + "Somewhere");
-
- final File initTDFile = new File("A wandering path");
- init.setTargetDirectory(initTDFile);
+ File tergetDirectory = new File("A wandering path");
+ init.setTargetDirectory(tergetDirectory);
init.setDefaultScriptExtension(".jpp");
-
- final Map initJoint = new HashMap();
- initJoint.put("somekey", "somevalue");
- init.setJointCompilationOptions(initJoint);
-
- final ParserPluginFactory initPPF = ParserPluginFactory.antlr4(init);
- init.setPluginFactory(initPPF);
+ init.setJointCompilationOptions(Collections.singletonMap("somekey",
"somevalue"));
+ ParserPluginFactory pluginFactory = ParserPluginFactory.antlr4(init);
+ init.setPluginFactory(pluginFactory);
assertEquals(WarningMessage.POSSIBLE_ERRORS, init.getWarningLevel());
assertEquals(true, init.getDebug());
assertEquals(true, init.getParameters());
- assertEquals(false, init.getVerbose());
+ assertEquals(Boolean.FALSE, init.getVerbose());
assertEquals(720, init.getTolerance());
assertEquals(234, init.getMinimumRecompilationInterval());
assertEquals("blarg.foo.WhatSit", init.getScriptBaseClass());
assertEquals("LEAD-123", init.getSourceEncoding());
- assertEquals(CompilerConfiguration.POST_JDK5,
init.getTargetBytecode());
+ assertEquals(CompilerConfiguration.JDK5, init.getTargetBytecode());
assertEquals(true, init.getRecompileGroovySource());
- {
- final List listCP = init.getClasspath();
- assertEquals("File1", listCP.get(0));
- assertEquals("Somewhere", listCP.get(1));
- }
- assertEquals(initTDFile, init.getTargetDirectory());
+ assertEquals("File1", init.getClasspath().get(0));
+ assertEquals("Somewhere", init.getClasspath().get(1));
+ assertEquals(tergetDirectory, init.getTargetDirectory());
assertEquals(".jpp", init.getDefaultScriptExtension());
- assertEquals(initJoint, init.getJointCompilationOptions());
- assertEquals(initPPF, init.getPluginFactory());
+ assertEquals("somevalue",
init.getJointCompilationOptions().get("somekey"));
+ assertEquals(pluginFactory, init.getPluginFactory());
+
+ //
- final CompilerConfiguration config = new CompilerConfiguration(init);
+ CompilerConfiguration config = new CompilerConfiguration(init);
assertEquals(WarningMessage.POSSIBLE_ERRORS, config.getWarningLevel());
- assertEquals(true, config.getDebug());
- assertEquals(false, config.getVerbose());
+ assertEquals(Boolean.TRUE, config.getDebug());
+ assertEquals(Boolean.FALSE, config.getVerbose());
assertEquals(720, config.getTolerance());
assertEquals(234, config.getMinimumRecompilationInterval());
assertEquals("blarg.foo.WhatSit", config.getScriptBaseClass());
assertEquals("LEAD-123", config.getSourceEncoding());
- assertEquals(CompilerConfiguration.POST_JDK5,
config.getTargetBytecode());
- assertEquals(true, config.getRecompileGroovySource());
- {
- final List listCP = config.getClasspath();
- assertEquals("File1", listCP.get(0));
- assertEquals("Somewhere", listCP.get(1));
- }
- assertEquals(initTDFile, config.getTargetDirectory());
+ assertEquals(CompilerConfiguration.JDK5, config.getTargetBytecode());
+ assertEquals(Boolean.TRUE, config.getRecompileGroovySource());
+ assertEquals("File1", config.getClasspath().get(0));
+ assertEquals("Somewhere", config.getClasspath().get(1));
+ assertEquals(tergetDirectory, config.getTargetDirectory());
assertEquals(".jpp", config.getDefaultScriptExtension());
- assertEquals(initJoint, config.getJointCompilationOptions());
- assertEquals(initPPF, config.getPluginFactory());
-
+ assertEquals("somevalue",
config.getJointCompilationOptions().get("somekey"));
+ assertEquals(pluginFactory, config.getPluginFactory());
}
+ @Test
public void testCopyConstructor2() {
final CompilerConfiguration init = new CompilerConfiguration();
@@ -186,45 +168,39 @@ public class CompilerConfigurationTest extends
GroovyTestCase {
init.setMinimumRecompilationInterval(975);
init.setScriptBaseClass("");
init.setSourceEncoding("Gutenberg");
- init.setTargetBytecode(CompilerConfiguration.PRE_JDK5);
+ init.setTargetBytecode(CompilerConfiguration.JDK5);
init.setRecompileGroovySource(false);
init.setClasspath("");
-
- final File initTDFile = new File("A wandering path");
- init.setTargetDirectory(initTDFile);
+ File tergetDirectory = new File("A wandering path");
+ init.setTargetDirectory(tergetDirectory);
assertEquals(WarningMessage.POSSIBLE_ERRORS, init.getWarningLevel());
- assertEquals(false, init.getDebug());
- assertEquals(false, init.getParameters());
- assertEquals(true, init.getVerbose());
+ assertEquals(Boolean.FALSE, init.getDebug());
+ assertEquals(Boolean.FALSE, init.getParameters());
+ assertEquals(Boolean.TRUE, init.getVerbose());
assertEquals(55, init.getTolerance());
assertEquals(975, init.getMinimumRecompilationInterval());
assertEquals("", init.getScriptBaseClass());
assertEquals("Gutenberg", init.getSourceEncoding());
- assertEquals(CompilerConfiguration.PRE_JDK5, init.getTargetBytecode());
- assertEquals(false, init.getRecompileGroovySource());
- {
- final List listCP = init.getClasspath();
- assertNotNull(listCP);
- assertEquals(0, listCP.size());
- }
- assertEquals(initTDFile, init.getTargetDirectory());
+ assertEquals(CompilerConfiguration.JDK5, init.getTargetBytecode());
+ assertEquals(Boolean.FALSE, init.getRecompileGroovySource());
+ assertEquals(Collections.emptyList(), init.getClasspath());
+ assertEquals(tergetDirectory, init.getTargetDirectory());
+
+ //
- final CompilerConfiguration config = new CompilerConfiguration(init);
+ CompilerConfiguration config = new CompilerConfiguration(init);
assertEquals(WarningMessage.POSSIBLE_ERRORS, config.getWarningLevel());
- assertEquals(false, config.getDebug());
- assertEquals(true, config.getVerbose());
+ assertEquals(Boolean.FALSE, config.getDebug());
+ assertEquals(Boolean.TRUE, config.getVerbose());
assertEquals(55, config.getTolerance());
assertEquals(975, config.getMinimumRecompilationInterval());
assertEquals("", config.getScriptBaseClass());
assertEquals("Gutenberg", config.getSourceEncoding());
- assertEquals(CompilerConfiguration.PRE_JDK5,
config.getTargetBytecode());
- assertEquals(false, config.getRecompileGroovySource());
- {
- final List listCP = config.getClasspath();
- assertEquals(0, listCP.size());
- }
- assertEquals(initTDFile, config.getTargetDirectory());
+ assertEquals(CompilerConfiguration.JDK5, config.getTargetBytecode());
+ assertEquals(Boolean.FALSE, config.getRecompileGroovySource());
+ assertEquals(Collections.emptyList(), config.getClasspath());
+ assertEquals(tergetDirectory, config.getTargetDirectory());
}
}
diff --git
a/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTestCase.groovy
b/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTestCase.groovy
index 18fb16e..5e0509a 100644
--- a/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTestCase.groovy
+++ b/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTestCase.groovy
@@ -19,16 +19,19 @@
package groovy.ant
import groovy.test.GroovyTestCase
+import groovy.transform.stc.ClosureParams
+import groovy.transform.stc.SimpleType
abstract class AntTestCase extends GroovyTestCase {
- protected void doInTmpDir(Closure cl) {
+
+ protected void doInTmpDir(@ClosureParams(value=SimpleType,
options=['groovy.ant.AntBuilder','groovy.util.FileTreeBuilder']) Closure<Void>
block) {
// tag::create_zip_builder[]
def ant = new AntBuilder()
// end::create_zip_builder[]
def baseDir = File.createTempDir()
ant.project.baseDir = baseDir
try {
- cl.call(ant, new FileTreeBuilder(baseDir))
+ block.call(ant, new FileTreeBuilder(baseDir))
} finally {
baseDir.deleteDir()
}
diff --git
a/subprojects/groovy-ant/src/test/groovy/groovy/ant/Groovy9352Test.groovy
b/subprojects/groovy-ant/src/test/groovy/groovy/ant/Groovy9352Test.groovy
index a53b60f..dba50587 100644
--- a/subprojects/groovy-ant/src/test/groovy/groovy/ant/Groovy9352Test.groovy
+++ b/subprojects/groovy-ant/src/test/groovy/groovy/ant/Groovy9352Test.groovy
@@ -18,7 +18,8 @@
*/
package groovy.ant
-class Groovy9352Test extends AntTestCase {
+final class Groovy9352Test extends AntTestCase {
+
void test() {
doInTmpDir { ant, baseDir ->
baseDir.src {
@@ -27,14 +28,13 @@ class Groovy9352Test extends AntTestCase {
package p1
import groovy.transform.CompileStatic
import p2.Producer
-
+
@CompileStatic
class Consumer {
void doSomething(Producer producer) {
// this shouldn't trigger a compile error
producer.foo()
}
-
}
''')
}
@@ -43,22 +43,22 @@ class Groovy9352Test extends AntTestCase {
package p2;
import java.util.List;
import java.util.ArrayList;
-
+
public class Producer {
public void foo() {}
-
+
// the following members are private, they
shouldn't leak into the public API
private Gson gson;
private Gson gson2 = new SubGson();
private List<Gson> gsonList;
@GsonAnnotation
private List<? extends Gson> gsonList2 = new
ArrayList<SubGson>();
-
+
@GsonAnnotation
private Producer(Gson p) {}
private Producer(int p) throws Gson {}
private Producer() { gson = new Gson(); }
-
+
@GsonAnnotation
private void bar(Gson p) {}
private Gson bar() { return null;}
@@ -82,7 +82,7 @@ class Groovy9352Test extends AntTestCase {
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-
+
@Target({ElementType.TYPE,
ElementType.ANNOTATION_TYPE, ElementType.FIELD, ElementType.METHOD,
ElementType.CONSTRUCTOR})
@Retention(RetentionPolicy.RUNTIME)
@interface GsonAnnotation {
@@ -92,15 +92,15 @@ class Groovy9352Test extends AntTestCase {
}
ant.mkdir(dir: 'build')
+
ant.taskdef(name: 'groovyc', classname:
'org.codehaus.groovy.ant.Groovyc')
// 1) compile the Java source code only
- ant.groovyc(srcdir: 'src', destdir: 'build', includes: 'p2/*' /*,
keepStubs: true*/) {
+ ant.groovyc(srcdir: 'src', destdir: 'build', includes: 'p2/*') {
javac()
}
- // 2) delete `Gson`, `SubGson`, `GsonAnnotation` related files:
- // "Gson.java", "Gson.class", "SubGson.java", "SubGson.class",
"GsonAnnotation.java", "GsonAnnotation.class"
+ // 2) delete Gson, SubGson and GsonAnnotation related files:
assert new File(ant.project.baseDir,"src/p2/Gson.java").delete()
assert new File(ant.project.baseDir,"build/p2/Gson.class").delete()
assert new File(ant.project.baseDir,"src/p2/SubGson.java").delete()
@@ -109,7 +109,11 @@ class Groovy9352Test extends AntTestCase {
assert new
File(ant.project.baseDir,"build/p2/GsonAnnotation.class").delete()
// 3) compile the Groovy source code
- ant.groovyc(srcdir: 'src', destdir: 'build', includes: 'p1/*')
+ ant.groovyc(srcdir: 'src', destdir: 'build', includes: 'p1/*') {
+ classpath {
+ pathelement(path: 'build')
+ }
+ }
}
}
}