UnmappedIsland ソースリファレンス - v0.1.0
    検索インデックスを準備しています...

    インターフェイス ConditionReader

    conditions(14節)の木を何が書かれているかとして読み上げる相手(ConditionNode.readBy)。

    葉の種類ごとにメソッドを持つのは、種類を1つ足したときに読み手が黙って取りこぼさないようにするため (効果の読み上げ口(EffectReader)と同じ理由)。kindごとに使うフィールドが引数で決まるので、 読み手の側に「このkindならこのフィールドがあるはず」という非nullの思い込みが要らない。

    複合ノード(all/any/not)は子を読み下せる形(ConditionDeclaration)で渡す。入れ子をどう畳むかは 読み手が決める。

    interface ConditionReader {
        all(children: readonly ConditionDeclaration[]): void;
        any(children: readonly ConditionDeclaration[]): void;
        not(child: ConditionDeclaration): void;
        objectMatches(root: ReferenceRoot, match: TypeMatchReading): void;
        property(reading: PropertyConditionReading): void;
        propertyStage(
            root: ReferenceRoot,
            propertyGlobalId: PropertyGlobalId,
            stageName: string,
            bound: StageBound,
        ): void;
        slotContent(
            root: ReferenceRoot,
            slotGlobalId: SlotGlobalId,
            match: TypeMatchReading,
        ): void;
        slotPosition(root: ReferenceRoot, slotGlobalId: SlotGlobalId): void;
    }
    インデックス