TypeIdentifierSyntax TypeIdentifierSyntax::addChildType(TypeIdentifierSyntax ChildType) const { auto MaybeChild = getRaw()->getChild(Cursor::ChildTypeIdentifier); if (MaybeChild->isMissing()) { auto NewRaw = getRaw()->replaceChild(Cursor::DotToken, SyntaxFactory::makeDotToken({}, {})) ->replaceChild(Cursor::ChildTypeIdentifier, ChildType.getRaw()); return Data->replaceSelf<TypeIdentifierSyntax>(NewRaw); } else { auto NewRawChild = MaybeChild->replaceChild(Cursor::ChildTypeIdentifier, ChildType.getRaw()); auto NewRaw = getRaw()->replaceChild(Cursor::ChildTypeIdentifier, NewRawChild); return Data->replaceSelf<TypeIdentifierSyntax>(NewRaw); } }
SameTypeRequirementSyntax SyntaxFactory::makeSameTypeRequirement( TypeIdentifierSyntax LeftTypeIdentifier, RC<TokenSyntax> EqualityToken, TypeSyntax RightType) { auto Raw = RawSyntax::make(SyntaxKind::SameTypeRequirement, { LeftTypeIdentifier.getRaw(), EqualityToken, RightType.getRaw() }, SourcePresence::Present); auto Data = SameTypeRequirementSyntaxData::make(Raw); return SameTypeRequirementSyntax { Data, Data.get() }; }