From ba58850087d4b694d6887ae6a711315f0e7a89ed Mon Sep 17 00:00:00 2001 From: Chocohead Date: Sun, 25 Oct 2026 17:36:14 +0000 Subject: [PATCH 1/2] Fix multi-dimensional arrays in generic signatures Previously only considered if a type was or wasn't an array --- .../asm/util/ClassSignature.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/spongepowered/asm/util/ClassSignature.java b/src/main/java/org/spongepowered/asm/util/ClassSignature.java index 6b9033a07..c51f24859 100644 --- a/src/main/java/org/spongepowered/asm/util/ClassSignature.java +++ b/src/main/java/org/spongepowered/asm/util/ClassSignature.java @@ -159,7 +159,7 @@ static interface IToken { * @param array arrayness flag * @return this token */ - public abstract IToken setArray(boolean array); + public abstract IToken setArray(byte array); /** * Set the wildcard on this token, only accepted if one of the valid @@ -192,9 +192,9 @@ static class Token implements IToken { private final boolean inner; /** - * True if this token represents an array type + * Array depth of this token */ - private boolean array; + private byte array; /** * Symbol (wildcard, unbound or base type) @@ -279,8 +279,8 @@ boolean hasInterfaceBound() { } @Override - public IToken setArray(boolean array) { - this.array |= array; + public IToken setArray(byte array) { + this.array = array; return this; } @@ -487,7 +487,7 @@ public String asType() { public String asType(boolean raw) { StringBuilder sb = new StringBuilder(); - if (this.array) { + for (int i = this.array; i > 0; i--) { sb.append('['); } @@ -557,9 +557,9 @@ class TokenHandle implements IToken { final Token token; /** - * True if this handle is an array type + * Array depth of this handle */ - boolean array; + byte array; /** * Wildcard for this handle @@ -576,11 +576,11 @@ class TokenHandle implements IToken { /* (non-Javadoc) * @see org.spongepowered.asm.util.ClassSignature.IToken - * #setArray(boolean) + * #setArray(byte) */ @Override - public IToken setArray(boolean array) { - this.array |= array; + public IToken setArray(byte array) { + this.array = array; return this; } @@ -615,7 +615,7 @@ public String asType() { sb.append(this.wildcard); } - if (this.array) { + for (int i = this.array; i > 0; i--) { sb.append('['); } @@ -678,9 +678,9 @@ abstract class TokenElement extends SignatureElement { protected Token token; /** - * True if the next element to be appended is an array element + * Array depth of the next element to be appended */ - private boolean array; + private byte array; public Token getToken() { if (this.token == null) { @@ -690,12 +690,12 @@ public Token getToken() { } protected void setArray() { - this.array = true; + this.array++; } - private boolean getArray() { - boolean array = this.array; - this.array = false; + private byte getArray() { + byte array = this.array; + this.array = 0; return array; } From 90470eb083aa5a8297431578ef1b282a97c07ebf Mon Sep 17 00:00:00 2001 From: Chocohead Date: Sun, 25 Oct 2026 18:31:02 +0000 Subject: [PATCH 2/2] No more bytes There is a charm to them though --- .../spongepowered/asm/util/ClassSignature.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/spongepowered/asm/util/ClassSignature.java b/src/main/java/org/spongepowered/asm/util/ClassSignature.java index c51f24859..7fe599766 100644 --- a/src/main/java/org/spongepowered/asm/util/ClassSignature.java +++ b/src/main/java/org/spongepowered/asm/util/ClassSignature.java @@ -159,7 +159,7 @@ static interface IToken { * @param array arrayness flag * @return this token */ - public abstract IToken setArray(byte array); + public abstract IToken setArray(int array); /** * Set the wildcard on this token, only accepted if one of the valid @@ -194,7 +194,7 @@ static class Token implements IToken { /** * Array depth of this token */ - private byte array; + private int array; /** * Symbol (wildcard, unbound or base type) @@ -279,7 +279,7 @@ boolean hasInterfaceBound() { } @Override - public IToken setArray(byte array) { + public IToken setArray(int array) { this.array = array; return this; } @@ -559,7 +559,7 @@ class TokenHandle implements IToken { /** * Array depth of this handle */ - byte array; + int array; /** * Wildcard for this handle @@ -576,10 +576,10 @@ class TokenHandle implements IToken { /* (non-Javadoc) * @see org.spongepowered.asm.util.ClassSignature.IToken - * #setArray(byte) + * #setArray(int) */ @Override - public IToken setArray(byte array) { + public IToken setArray(int array) { this.array = array; return this; } @@ -680,7 +680,7 @@ abstract class TokenElement extends SignatureElement { /** * Array depth of the next element to be appended */ - private byte array; + private int array; public Token getToken() { if (this.token == null) { @@ -693,8 +693,8 @@ protected void setArray() { this.array++; } - private byte getArray() { - byte array = this.array; + private int getArray() { + int array = this.array; this.array = 0; return array; }