You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Martin Skurla (JIRA)" <ji...@apache.org> on 2018/05/07 13:20:00 UTC
[jira] [Commented] (GROOVY-8572) Groovy 2.4.12 Static compiler
fails on nonsense type inference error
[ https://issues.apache.org/jira/browse/GROOVY-8572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16465902#comment-16465902 ]
Martin Skurla commented on GROOVY-8572:
---------------------------------------
Groovy class:
{code:java}
package apollosoft.build.support.gradle.assets
import groovy.transform.CompileStatic
import groovy.transform.TupleConstructor
@CompileStatic
@TupleConstructor
class ApolloAssetCategory {
final String name
final List<String> includes
final boolean cleanExecutableFlag
@Override
String toString() {
"($name includes: $includes, cleanExecutableFlag: $cleanExecutableFlag)"
}
}
@CompileStatic
@TupleConstructor
class ApolloAssetSvnRepository {
static final String DEFAULT_SVN_USER = 'apollo'
static final String DEFAULT_SVN_PASSWORD = 'apollo'
final String name
final String url
final String user
final String password
@Override
String toString() {
"($name url: $url, user: $user, password: $password)"
}
}
@CompileStatic
class ApolloAssetsDSLExtension {
final List<ApolloAssetCategory> categories = []
final List<ApolloAssetSvnRepository> svnRepositories = []
final Map<String, ApolloAssetCategory> categoriesMap = [:]
final Map<String, ApolloAssetSvnRepository> svnRepositoriesMap = [:]
boolean hardCopy // writeable property
boolean overwriteFiles // writeable property
private static final String INCLUDES_PARAM_NAME = 'includes'
private static final String CLEAN_EXECUTABLE_FLAG_PARAM_NAME= 'cleanExecutableFlag'
void categories(Closure closure) {
closure.resolveStrategy = Closure.OWNER_FIRST
closure.delegate = new Object() {
@Override
Object invokeMethod(String methodName, Object args) {
Map<String, Object> paramMap = ((Map) args)[0] as Map
if (!paramMap.containsKey(INCLUDES_PARAM_NAME))
throw new IllegalApolloAssetsDSLNotationException("Category declaration does not contain '$INCLUDES_PARAM_NAME' parameter!")
ApolloAssetCategory category = new ApolloAssetCategory(methodName,
(List<String>) paramMap[INCLUDES_PARAM_NAME],
// because of the Groovy's truth, it has to be written in this stupid way
paramMap[CLEAN_EXECUTABLE_FLAG_PARAM_NAME] == true ? true : false)
categories << category
categoriesMap.put methodName, category
}
}
closure.call()
}
void svnRepositories(Closure closure) {
closure.resolveStrategy = Closure.OWNER_FIRST
closure.delegate = new Object() {
@Override
Object invokeMethod(String methodName, Object args) {
ApolloAssetSvnRepository svnRepository = new ApolloAssetSvnRepository(methodName,
(String) ((Map) args)[0]['url'],
(String) ((Map) args)[0]['user'] ?: ApolloAssetSvnRepository.DEFAULT_SVN_USER,
(String) ((Map) args)[0]['password'] ?: ApolloAssetSvnRepository.DEFAULT_SVN_PASSWORD)
svnRepositories << svnRepository
svnRepositoriesMap.put methodName, svnRepository
}
}
closure.call()
}
}
{code}
> Groovy 2.4.12 Static compiler fails on nonsense type inference error
> --------------------------------------------------------------------
>
> Key: GROOVY-8572
> URL: https://issues.apache.org/jira/browse/GROOVY-8572
> Project: Groovy
> Issue Type: Bug
> Components: Static Type Checker
> Affects Versions: 2.4.12
> Reporter: Martin Skurla
> Priority: Major
>
> I am using Gradle which internally currently uses Groovy 2.4.12.
> I am getting the following error:
> {code:java}
> martin@martin-desktop:~/devel/apollo/buildteam/gradle_plugins(master)$ ./gradlew clean test
> > Task :compileGroovy
> startup failed:
> /home/martin/devel/apollo/buildteam/gradle_plugins/src/main/groovy/apollosoft/build/support/gradle/assets/ApolloAssetsDSLExtension.groovy: 54: [Static type checking] - Cannot use diamond <> with anonymous inner classes
> @ line 54, column 28.
> closure.delegate = new Object() {
> ^
> 1 error
> {code}
> It looks like it is wrong, I am not specifying any diamond operator anywhere.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)