groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Keegan Witt (JIRA)" <j...@apache.org>
Subject [jira] [Assigned] (GROOVY-7524) Document that shouldn't mix TupleConstructor and InheritConstructors
Date Sun, 02 Aug 2015 15:53:04 GMT

     [ https://issues.apache.org/jira/browse/GROOVY-7524?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Keegan Witt reassigned GROOVY-7524:
-----------------------------------

    Assignee: Keegan Witt

> Document that shouldn't mix TupleConstructor and InheritConstructors
> --------------------------------------------------------------------
>
>                 Key: GROOVY-7524
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7524
>             Project: Groovy
>          Issue Type: Documentation
>            Reporter: Keegan Witt
>            Assignee: Keegan Witt
>
> This compiles
> {code:java}
> @groovy.transform.TupleConstructor
> class Animal {
>   int age
> }
> @groovy.transform.InheritConstructors
> @groovy.transform.TupleConstructor
> class Cat extends Animal {
>   String name
> }
> {code}
> But simply changing the order of the annotations, like this
> {code:java}
> @groovy.transform.TupleConstructor
> class Animal {
>   int age
> }
> @groovy.transform.TupleConstructor
> @groovy.transform.InheritConstructors
> class Cat extends Animal {
>   String name
> }
> {code}
> causes
> {noformat}java.util.NoSuchElementException
> 	at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1205)
> 	at java.util.TreeMap$KeyIterator.next(TreeMap.java:1261)
> 	at org.codehaus.groovy.classgen.asm.InvocationWriter.makeMOPBasedConstructorCall(InvocationWriter.java:723)
> 	at org.codehaus.groovy.classgen.asm.InvocationWriter.visitSpecialConstructorCall(InvocationWriter.java:629)
> 	at org.codehaus.groovy.classgen.asm.InvocationWriter.writeSpecialConstructorCall(InvocationWriter.java:619)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorCallExpression(AsmClassGenerator.java:813)
> 	at org.codehaus.groovy.ast.expr.ConstructorCallExpression.visit(ConstructorCallExpression.java:44)
> 	at org.codehaus.groovy.classgen.asm.StatementWriter.writeExpressionStatement(StatementWriter.java:604)
> 	at org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeExpressionStatement(OptimizingStatementWriter.java:354)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitExpressionStatement(AsmClassGenerator.java:619)
> 	at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40)
> 	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:101)
> 	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:112)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitStdMethod(AsmClassGenerator.java:429)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorOrMethod(AsmClassGenerator.java:386)
> 	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructor(ClassCodeVisitorSupport.java:119)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructor(AsmClassGenerator.java:501)
> 	at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1079)
> 	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:50)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:232)
> 	at org.codehaus.groovy.control.CompilationUnit$16.call(CompilationUnit.java:810)
> 	at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1052)
> 	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:588)
> 	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:566)
> 	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:543)
> 	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:297)
> 	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:267)
> ...{noformat}
> We should document that these transformations can interfere with each other, and generally
shouldn't be used concurrently.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message