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

__all__ = ('PName',)

from bu4.linking.constructs.lname import LName
from bu4.linking.states.linkingfinished import LinkingFinished
from bu4.linking.states.linkingstate import LinkingState
from bu4.parsing.constructs.parsed import Parsed


class PName(Parsed):
    def __init__(self, name: bytes):
        self.name = name

    def link(self, promise: set[bytes]) -> LinkingState:
        assert self.name in promise, f'undefined: {self.name}'
        return LinkingFinished(LName(self.name))