This repository was archived by the owner on Nov 25, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
This repository was archived by the owner on Nov 25, 2025. It is now read-only.
Java8MapperーvisitArrayAccessメソットのコード抜け #28
Copy link
Copy link
Open
Description
arrayAccess=>UniFieldAccess
: ( expressionName$receiver '[' expression$index ']'
| primaryNoNewArray_lfno_arrayAccess$receiver '[' expression$index ']'
)
( primaryNoNewArray_lf_arrayAccess$receiver '[' expression$index ']'
)*
;
アノテーションの後に生成されたメソットを見ると
override public visitArrayAccess(Java8Parser.ArrayAccessContext ctx) {
val map = newHashMap
val none = newArrayList
map.put("none", none)
val receiver = newArrayList
map.put("receiver", receiver)
val index = newArrayList
map.put("index", index)
ctx.children.forEach [
if (it instanceof RuleContext) {
switch it.invokingState {
case 2100: {
receiver += it.visit
}
case 2302: {
index += it.visit
}
case 2308: {
index += it.visit
}
case 2318: {
receiver += it.visit
}
case 2320: {
index += it.visit
}
default: {
none += it.visit
}
}
} else if (it instanceof TerminalNode) {
switch it.symbol.type {
default: {
none += it.visit
}
}
}
]
map.castTo(UniFieldAccess)
}
case 2302からcase 2308の間にreceiverが一個抜けてます。
case 2306: {
receiver += it.visit
}
を追加するとマッパーが正しく動きます。
Metadata
Metadata
Assignees
Labels
No labels