Skip to content
This repository was archived by the owner on Nov 25, 2025. It is now read-only.
This repository was archived by the owner on Nov 25, 2025. It is now read-only.

Java8MapperーvisitArrayAccessメソットのコード抜け #28

@khlee12

Description

@khlee12
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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions