Skip to content

Commit 61d2bf1

Browse files
committed
fix: support normalized array descriptors in java emitter
1 parent 44ba3f3 commit 61d2bf1

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

  • amber-pipeline/src/main/kotlin/dev/amber/pipeline/codegen

amber-pipeline/src/main/kotlin/dev/amber/pipeline/codegen/JavaEmitter.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,6 +1106,17 @@ class JavaEmitter {
11061106
if (descriptor.startsWith("[")) descriptor.substring(1) else descriptor
11071107

11081108
private fun newArrayExpression(descriptor: String, sizeArg: String, renameIndex: dev.amber.pipeline.mapping.MappingRenameIndex): String {
1109+
if (descriptor.endsWith("[]")) {
1110+
var componentType = descriptor
1111+
var dimensions = 0
1112+
while (componentType.endsWith("[]")) {
1113+
dimensions += 1
1114+
componentType = componentType.removeSuffix("[]")
1115+
}
1116+
val trailing = if (dimensions <= 1) "" else List(dimensions - 1) { "[]" }.joinToString("")
1117+
return "new $componentType[$sizeArg]$trailing"
1118+
}
1119+
11091120
var dimensions = 0
11101121
var component = descriptor
11111122
while (component.startsWith("[")) {

0 commit comments

Comments
 (0)