You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Marcio (Jira)" <ji...@apache.org> on 2021/02/22 01:36:00 UTC
[jira] [Created] (GROOVY-9951) @CompileStatic @POJO annotation on
static inner class with @Immutable annotation
Marcio created GROOVY-9951:
------------------------------
Summary: @CompileStatic @POJO annotation on static inner class with @Immutable annotation
Key: GROOVY-9951
URL: https://issues.apache.org/jira/browse/GROOVY-9951
Project: Groovy
Issue Type: Bug
Components: Static compilation
Affects Versions: 4.0.0-alpha-2
Environment: Ubuntu
Reporter: Marcio
Example:
{color:#cc7832}import {color}groovy.transform.{color:#bbb529}CompileStatic
{color}{color:#cc7832}import {color}groovy.transform.{color:#bbb529}Immutable
{color}{color:#cc7832}import {color}groovy.transform.stc.{color:#bbb529}POJO
{color}{color:#bbb529}
{color}{color:#cc7832}class {color}X {color:#9876aa}{
{color}{color:#9876aa}
{color} {color:#bbb529}@Immutable @CompileStatic @POJO
{color} {color:#cc7832}static class {color}Id {color:#9876aa}{
{color}{color:#9876aa}
{color} String {color:#9876aa}value
{color}{color:#9876aa}
{color} {color:#9876aa}}
{color}{color:#9876aa}
{color}{color:#9876aa}}{color}
Then call contructor:
{color:#cc7832}var {color}x = {color:#cc7832}new {color}X.Id{color:#9876aa}({color}{color:#6a8759}"1"{color}{color:#9876aa})
{color}
Expected:
No error at runtime.
Actual:
Bad type on operand stack
Exception Details:
Location:
dev/X$Id.<init>(Ljava/util/Map;)V @44: invokevirtual
Reason:
Type 'dev/$Id' (current frame, stack[0]) is not assignable to 'groovy/lang/Closure'
Current Frame:
bci: @44
flags: \{ }
locals: \{ 'dev/X$Id', 'java/util/Map', top, 'java/util/List' }
stack: \{ 'dev/X$Id' }
Bytecode:
0000000: 2ab7 0019 2bc7 0007 04a7 0004 0399 000f
0000010: 03bd 0004 b800 264d 2c4c 2c57 04bd 0004
0000020: 5903 1227 53b8 002b 4e2d 572a b600 31c0
0000030: 0007 b600 37b9 003d 0100 013a 043a 0519
0000040: 05b9 0043 0100 9900 4019 05b9 0046 0100
0000050: b800 4cc0 001b 3a04 2ab6 0031 c000 0719
0000060: 04b9 0052 0200 9a00 0704 a700 0403 9900
0000070: 15bb 0054 5912 5619 04b8 005c b700 5ec0
0000080: 0060 bfa7 ffbc 2b12 27b9 0065 0200 9900
0000090: 202b 1227 b900 6902 00b8 004c c000 1b3a
00000a0: 0619 062a 5fb5 001d 1906 57a7 0016 013a
00000b0: 0719 07b8 004c c000 1b2a 5fb5 001d 1907
00000c0: 57b1
Stackmap Table:
full_frame(@12,\{Object[#2],Object[#98]},{})
same_locals_1_stack_item_frame(@13,Integer)
same_frame(@28)
full_frame(@63,\{Object[#2],Object[#98],Top,Object[#78],Object[#27],Object[#63]},{})
same_frame(@109)
same_locals_1_stack_item_frame(@110,Integer)
same_frame(@131)
same_frame(@134)
same_frame(@174)
same_frame(@193)
java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
dev/X$Id.<init>(Ljava/util/Map;)V @44: invokevirtual
Reason:
Type 'dev/X$Id' (current frame, stack[0]) is not assignable to 'groovy/lang/Closure'
Current Frame:
bci: @44
flags: \{ }
locals: \{ 'dev/X$Id', 'java/util/Map', top, 'java/util/List' }
stack: \{ 'dev/sX$Id' }
Bytecode:
0000000: 2ab7 0019 2bc7 0007 04a7 0004 0399 000f
0000010: 03bd 0004 b800 264d 2c4c 2c57 04bd 0004
0000020: 5903 1227 53b8 002b 4e2d 572a b600 31c0
0000030: 0007 b600 37b9 003d 0100 013a 043a 0519
0000040: 05b9 0043 0100 9900 4019 05b9 0046 0100
0000050: b800 4cc0 001b 3a04 2ab6 0031 c000 0719
0000060: 04b9 0052 0200 9a00 0704 a700 0403 9900
0000070: 15bb 0054 5912 5619 04b8 005c b700 5ec0
0000080: 0060 bfa7 ffbc 2b12 27b9 0065 0200 9900
0000090: 202b 1227 b900 6902 00b8 004c c000 1b3a
00000a0: 0619 062a 5fb5 001d 1906 57a7 0016 013a
00000b0: 0719 07b8 004c c000 1b2a 5fb5 001d 1907
00000c0: 57b1
Stackmap Table:
full_frame(@12,\{Object[#2],Object[#98]},{})
same_locals_1_stack_item_frame(@13,Integer)
same_frame(@28)
full_frame(@63,\{Object[#2],Object[#98],Top,Object[#78],Object[#27],Object[#63]},{})
same_frame(@109)
same_locals_1_stack_item_frame(@110,Integer)
same_frame(@131)
same_frame(@134)
same_frame(@174)
same_frame(@193)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)