[ https://issues.apache.org/jira/browse/GROOVY-11375?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King updated GROOVY-11375: ------------------------------- Description: For this code: {code} @groovy.transform.CompileStatic def method() { var temp = new Date() temp = temp.format('EEEE')[-3..-1].capitalize() assert temp == 'Day' temp = temp.size() assert temp ** temp == 27 } method() {code} The compiler gives this error: {noformat} BUG! exception in phase 'class generation' in source unit 'ConsoleScript3' At line 10 column 8 On receiver: temp with message: power and arguments: temp This method should not have been called. Please try to create a simple example reproducing this error and file a bug report at https://issues.apache.org/jira/browse/GROOVY at org.codehaus.groovy.classgen.asm.sc.StaticTypesCallSiteWriter.makeSingleArgumentCall(StaticTypesCallSiteWriter.java:582) at org.codehaus.groovy.classgen.asm.InvocationWriter.makeSingleArgumentCall(InvocationWriter.java:626) at org.codehaus.groovy.classgen.asm.BinaryExpressionHelper.evaluateBinaryExpression(BinaryExpressionHelper.java:602) at org.codehaus.groovy.classgen.asm.BinaryExpressionMultiTypeDispatcher.evaluateBinaryExpression(BinaryExpressionMultiTypeDispatcher.java:242) at org.codehaus.groovy.classgen.asm.BinaryExpressionHelper.eval(BinaryExpressionHelper.java:264) at org.codehaus.groovy.classgen.AsmClassGenerator.visitBinaryExpression(AsmClassGenerator.java:849) ... {noformat} We apply flow typing for the receiver but not the argument type. This looks like a case that should be handled where we currently have "TODO: more cases ..." in StaticTypesCallSiteWriter. The same situation occurs for the shift operators, e.g.: {code} assert temp << temp == 24 {code} was: For this code: {code} @groovy.transform.CompileStatic def method() { var temp = new Date() temp = temp.format('EEEE')[-3..-1].capitalize() assert temp == 'Day' temp = temp.size() assert temp ** temp == 27 } method() {code} The compiler gives this error: {noformat} BUG! exception in phase 'class generation' in source unit 'ConsoleScript3' At line 10 column 8 On receiver: temp with message: power and arguments: temp This method should not have been called. Please try to create a simple example reproducing this error and file a bug report at https://issues.apache.org/jira/browse/GROOVY at org.codehaus.groovy.classgen.asm.sc.StaticTypesCallSiteWriter.makeSingleArgumentCall(StaticTypesCallSiteWriter.java:582) at org.codehaus.groovy.classgen.asm.InvocationWriter.makeSingleArgumentCall(InvocationWriter.java:626) at org.codehaus.groovy.classgen.asm.BinaryExpressionHelper.evaluateBinaryExpression(BinaryExpressionHelper.java:602) at org.codehaus.groovy.classgen.asm.BinaryExpressionMultiTypeDispatcher.evaluateBinaryExpression(BinaryExpressionMultiTypeDispatcher.java:242) at org.codehaus.groovy.classgen.asm.BinaryExpressionHelper.eval(BinaryExpressionHelper.java:264) at org.codehaus.groovy.classgen.AsmClassGenerator.visitBinaryExpression(AsmClassGenerator.java:849) ... {noformat} We apply flow typing for the receiver but not the argument type. This looks like a case that should be handled where we currently have "TODO: more cases ..." in StaticTypesCallSiteWriter. > Power binary expression finds incorrect type - currently uses declaration > inferred type > --------------------------------------------------------------------------------------- > > Key: GROOVY-11375 > URL: https://issues.apache.org/jira/browse/GROOVY-11375 > Project: Groovy > Issue Type: Bug > Reporter: Paul King > Priority: Major > > For this code: > {code} > @groovy.transform.CompileStatic > def method() { > var temp = new Date() > temp = temp.format('EEEE')[-3..-1].capitalize() > assert temp == 'Day' > temp = temp.size() > assert temp ** temp == 27 > } > method() > {code} > The compiler gives this error: > {noformat} > BUG! exception in phase 'class generation' in source unit 'ConsoleScript3' At > line 10 column 8 > On receiver: temp with message: power and arguments: temp > This method should not have been called. Please try to create a simple > example reproducing > this error and file a bug report at > https://issues.apache.org/jira/browse/GROOVY > at > org.codehaus.groovy.classgen.asm.sc.StaticTypesCallSiteWriter.makeSingleArgumentCall(StaticTypesCallSiteWriter.java:582) > at > org.codehaus.groovy.classgen.asm.InvocationWriter.makeSingleArgumentCall(InvocationWriter.java:626) > at > org.codehaus.groovy.classgen.asm.BinaryExpressionHelper.evaluateBinaryExpression(BinaryExpressionHelper.java:602) > at > org.codehaus.groovy.classgen.asm.BinaryExpressionMultiTypeDispatcher.evaluateBinaryExpression(BinaryExpressionMultiTypeDispatcher.java:242) > at > org.codehaus.groovy.classgen.asm.BinaryExpressionHelper.eval(BinaryExpressionHelper.java:264) > at > org.codehaus.groovy.classgen.AsmClassGenerator.visitBinaryExpression(AsmClassGenerator.java:849) > ... > {noformat} > We apply flow typing for the receiver but not the argument type. This looks > like a case that should be handled where we currently have "TODO: more cases > ..." in StaticTypesCallSiteWriter. > The same situation occurs for the shift operators, e.g.: > {code} > assert temp << temp == 24 > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)