// SPDX-FileCopyrightText: 2026 Kaede Akino // SPDX-License-Identifier: GPL-3.0-only import Foundation import SwiftParser import SwiftSyntax final class SwiftDataRepositoryDeclarationVisitor: SyntaxVisitor { private static let namePattern = try! NSRegularExpression( pattern: #"^SwiftData[A-Za-z0-9_]*Repository$"# ) private(set) var containsDeclaration = false init() { super.init(viewMode: .sourceAccurate) } override func visit(_ node: ClassDeclSyntax) -> SyntaxVisitorContinueKind { record(node.name) return .visitChildren } override func visit(_ node: StructDeclSyntax) -> SyntaxVisitorContinueKind { record(node.name) return .visitChildren } override func visit(_ node: EnumDeclSyntax) -> SyntaxVisitorContinueKind { record(node.name) return .visitChildren } override func visit(_ node: ActorDeclSyntax) -> SyntaxVisitorContinueKind { record(node.name) return .visitChildren } override func visit(_ node: ProtocolDeclSyntax) -> SyntaxVisitorContinueKind { record(node.name) return .visitChildren } override func visit(_ node: TypeAliasDeclSyntax) -> SyntaxVisitorContinueKind { record(node.name) return .visitChildren } private func record(_ token: TokenSyntax) { var name = token.text if name.count >= 2, name.first == "`", name.last == "`" { name.removeFirst() name.removeLast() } let range = NSRange(name.startIndex..