diff --git a/Sources/SwordGenerator/Parser/Visitor/ComponentVisitor.swift b/Sources/SwordGenerator/Parser/Visitor/ComponentVisitor.swift index b60cd06..dfc40f6 100644 --- a/Sources/SwordGenerator/Parser/Visitor/ComponentVisitor.swift +++ b/Sources/SwordGenerator/Parser/Visitor/ComponentVisitor.swift @@ -7,8 +7,8 @@ final class ComponentVisitor: SourceFileVisitor { let arguments: [ComponentArgument] } - override func visitPost(_ node: ClassDeclSyntax) { - guard let componentAttribute = extractComponentAttribute(from: node.attributes) else { return } + override func visit(_ node: ClassDeclSyntax) -> SyntaxVisitorContinueKind { + guard let componentAttribute = extractComponentAttribute(from: node.attributes) else { return .skipChildren } results.append( RootComponentDescriptor( @@ -17,6 +17,7 @@ final class ComponentVisitor: SourceFileVisitor { location: node.startLocation(converter: locationConverter) ) ) + return .skipChildren } private func extractComponentAttribute(from attributes: AttributeListSyntax) diff --git a/Sources/SwordGenerator/Parser/Visitor/DependencyVisitor.swift b/Sources/SwordGenerator/Parser/Visitor/DependencyVisitor.swift index 776494a..63a3696 100644 --- a/Sources/SwordGenerator/Parser/Visitor/DependencyVisitor.swift +++ b/Sources/SwordGenerator/Parser/Visitor/DependencyVisitor.swift @@ -8,31 +8,34 @@ final class DependencyVisitor: SourceFileVisitor { let scope: Scope? } - override func visitPost(_ node: StructDeclSyntax) { + override func visit(_ node: StructDeclSyntax) -> SyntaxVisitorContinueKind { registerDependencyIfNeeded( name: node.name, attributes: node.attributes, members: node.memberBlock.members, isReferenceType: false ) + return .skipChildren } - override func visitPost(_ node: ClassDeclSyntax) { + override func visit(_ node: ClassDeclSyntax) -> SyntaxVisitorContinueKind { registerDependencyIfNeeded( name: node.name, attributes: node.attributes, members: node.memberBlock.members, isReferenceType: true ) + return .skipChildren } - override func visitPost(_ node: ActorDeclSyntax) { + override func visit(_ node: ActorDeclSyntax) -> SyntaxVisitorContinueKind { registerDependencyIfNeeded( name: node.name, attributes: node.attributes, members: node.memberBlock.members, isReferenceType: true ) + return .skipChildren } private func registerDependencyIfNeeded( diff --git a/Sources/SwordGenerator/Parser/Visitor/ImportVisitor.swift b/Sources/SwordGenerator/Parser/Visitor/ImportVisitor.swift index bcf14b9..2da2e36 100644 --- a/Sources/SwordGenerator/Parser/Visitor/ImportVisitor.swift +++ b/Sources/SwordGenerator/Parser/Visitor/ImportVisitor.swift @@ -1,12 +1,13 @@ import SwiftSyntax final class ImportVisitor: SourceFileVisitor { - override func visitPost(_ node: ImportDeclSyntax) { + override func visit(_ node: ImportDeclSyntax) -> SyntaxVisitorContinueKind { results.append( Import( path: "\(node.trimmed.path)", kind: node.trimmed.importKindSpecifier?.text ) ) + return .skipChildren } } diff --git a/Sources/SwordGenerator/Parser/Visitor/ModuleVisitor.swift b/Sources/SwordGenerator/Parser/Visitor/ModuleVisitor.swift index 4dc5262..9ae4181 100644 --- a/Sources/SwordGenerator/Parser/Visitor/ModuleVisitor.swift +++ b/Sources/SwordGenerator/Parser/Visitor/ModuleVisitor.swift @@ -9,9 +9,8 @@ final class ModuleVisitor: SourceFileVisitor { private struct ProviderAttribute { let scope: Scope? } - - override func visitPost(_ node: StructDeclSyntax) { - guard let moduleAttribute = extractModuleAttribute(from: node.attributes) else { return } + override func visit(_ node: StructDeclSyntax) -> SyntaxVisitorContinueKind { + guard let moduleAttribute = extractModuleAttribute(from: node.attributes) else { return .skipChildren } let providers: [ProviderDescriptor] = node.memberBlock.members.compactMap { member in guard @@ -51,6 +50,7 @@ final class ModuleVisitor: SourceFileVisitor { providers: providers ) ) + return .skipChildren } private func extractModuleAttribute(from attributes: AttributeListSyntax) -> ModuleAttribute? { diff --git a/Sources/SwordGenerator/Parser/Visitor/SubcomponentVisitor.swift b/Sources/SwordGenerator/Parser/Visitor/SubcomponentVisitor.swift index 0c7b8f3..7203e4f 100644 --- a/Sources/SwordGenerator/Parser/Visitor/SubcomponentVisitor.swift +++ b/Sources/SwordGenerator/Parser/Visitor/SubcomponentVisitor.swift @@ -8,17 +8,18 @@ final class SubcomponentVisitor: SourceFileVisitor { let arguments: [ComponentArgument] } - override func visitPost(_ node: ClassDeclSyntax) { - if let subcomponentAttribute = extractSubcomponentAttribute(from: node.attributes) { - results.append( - SubcomponentDescriptor( - name: ComponentName(value: node.name.text), - arguments: subcomponentAttribute.arguments, - parentName: subcomponentAttribute.parent, - location: node.startLocation(converter: locationConverter) - ) + override func visit(_ node: ClassDeclSyntax) -> SyntaxVisitorContinueKind { + guard let subcomponentAttribute = extractSubcomponentAttribute(from: node.attributes) else { return .skipChildren } + + results.append( + SubcomponentDescriptor( + name: ComponentName(value: node.name.text), + arguments: subcomponentAttribute.arguments, + parentName: subcomponentAttribute.parent, + location: node.startLocation(converter: locationConverter) ) - } + ) + return .skipChildren } private func extractSubcomponentAttribute(from attributes: AttributeListSyntax)