[ https://issues.apache.org/jira/browse/GROOVY-11297?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17810777#comment-17810777 ]
ASF GitHub Bot commented on GROOVY-11297: ----------------------------------------- daniellansun commented on PR #2042: URL: https://github.com/apache/groovy/pull/2042#issuecomment-1909781248 +1 > Fail to identify duplicate constructor declaration > -------------------------------------------------- > > Key: GROOVY-11297 > URL: https://issues.apache.org/jira/browse/GROOVY-11297 > Project: Groovy > Issue Type: Bug > Reporter: Thodoris Sotiropoulos > Assignee: Paul King > Priority: Minor > > I have the following ill-typed program > {code} > class A { > A(int x) {} > A(int y) {} > } > {code} > h3. Actual behavior > The program compiles but I get the following runtime exception > {code} > org.codehaus.groovy.control.MultipleCompilationErrorsException: startup > failed: > General error during instruction selection: java.lang.ClassFormatError: > Duplicate method name "<init>" with signature "(I)V" in class file A > java.lang.RuntimeException: java.lang.ClassFormatError: Duplicate method name > "<init>" with signature "(I)V" in class file A > at > org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:934) > at > org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:654) > at > org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:628) > at > groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:368) > at > groovy.lang.GroovyClassLoader.lambda$parseClass$2(GroovyClassLoader.java:311) > at > org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) > at > org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) > at > groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:309) > at groovy.lang.GroovyShell.parseClass(GroovyShell.java:543) > at groovy.lang.GroovyShell.run(GroovyShell.java:364) > at groovy.lang.GroovyShell.run(GroovyShell.java:354) > at groovy.ui.GroovyMain.processOnce(GroovyMain.java:645) > at groovy.ui.GroovyMain.run(GroovyMain.java:390) > at groovy.ui.GroovyMain.access$1400(GroovyMain.java:68) > at groovy.ui.GroovyMain$GroovyCommand.process(GroovyMain.java:314) > at groovy.ui.GroovyMain.processArgs(GroovyMain.java:142) > at groovy.ui.GroovyMain.main(GroovyMain.java:115) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) > at > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:568) > at > org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:112) > at > org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130) > Caused by: java.lang.ClassFormatError: Duplicate method name "<init>" with > signature "(I)V" in class file A > at java.base/java.lang.ClassLoader.defineClass1(Native Method) > at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012) > at > java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) > at groovy.lang.GroovyClassLoader.access$400(GroovyClassLoader.java:90) > at > groovy.lang.GroovyClassLoader$ClassCollector.createClass(GroovyClassLoader.java:675) > at > groovy.lang.GroovyClassLoader$ClassCollector.onClassNode(GroovyClassLoader.java:692) > at > groovy.lang.GroovyClassLoader$ClassCollector.call(GroovyClassLoader.java:697) > at > org.codehaus.groovy.control.CompilationUnit$3.call(CompilationUnit.java:768) > at > org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:900) > ... 22 more > 1 error > {code} > h3. Expected behavior > Reject the program and report duplicate constructor declaration. This check > is performed for methods, but not for constructors. > Tested against master (commit: b39bef39b5a22bd53769298d43a8192cbedecb63) -- This message was sent by Atlassian Jira (v8.20.10#820010)