#  Copyright (c) PARRRATE T&V 2021. All rights reserved.

from bu4.encoding.codes import CODE_CALL
from bu4.indexing.constructs.icall import ICall
from bu4.indexing.constructs.indexed import Indexed
from bu4.parsing.extensions.CodeExtension import CodeExtension
from bu4.transform.states.transformstate import TransformState

__all__ = ('XICall',)


class XICall(CodeExtension[Indexed], code=CODE_CALL):
    def apply(self) -> TransformState[Indexed]:
        return self.readlambda(
            lambda argument: self.readlambdafinished(
                lambda lambda_: ICall(
                    argument,
                    lambda_
                )
            )
        )