You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Keegan Witt (JIRA)" <ji...@apache.org> on 2015/07/24 18:34:04 UTC
[jira] [Comment Edited] (GROOVY-7524) Inconsistant behavior when
mixing TupleConstructor and InheritConstructors
[ https://issues.apache.org/jira/browse/GROOVY-7524?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14640712#comment-14640712 ]
Keegan Witt edited comment on GROOVY-7524 at 7/24/15 4:33 PM:
--------------------------------------------------------------
I changed my mind. I think we should verify they're not combined and/or document they shouldn't be combined rather than fixing (unless fixing turns out to be pretty easy). I'm now thinking users should use {{includeSuperProperties}} or {{includeSuperFields}} instead.
was (Author: keegan):
I changed my mind. I think we should verify they're not combined and/or document they shouldn't be combined rather than fixing (unless fixing turns out to be pretty easy). I'm now thinking Users should use {{includeSuperProperties}} or {{includeSuperFields}} instead.
> Inconsistant behavior when mixing TupleConstructor and InheritConstructors
> --------------------------------------------------------------------------
>
> Key: GROOVY-7524
> URL: https://issues.apache.org/jira/browse/GROOVY-7524
> Project: Groovy
> Issue Type: Bug
> Reporter: Keegan Witt
>
> This compiles, but the constructors from the subclass are deleted because of GROOVY-7522.
> {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}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)