@@ -10,38 +10,38 @@ import SwiftSyntaxMacros
1010
1111extension ClassDeclSyntax {
1212
13- public var unverifiedInferredSuperclass : TypeSyntax ? {
13+ public var unverifiedInferredSuperclassType : TypeSyntax ? {
1414 inheritanceClause? . inheritedTypes. first? . type. trimmed
1515 }
1616
17- public func inferredSuperclass ( ) -> TypeSyntax ? {
18- let visitor = SubclassKeywordsVisitor ( for: self )
19- return visitor . verifiedSuperclass ( )
17+ public func inferredSuperclassType ( ) -> TypeSyntax ? {
18+ let verifier = SuperclassVerifier ( for: self )
19+ return verifier . verifiedSuperclassType ( )
2020 }
2121
22- public func inferredSuperclass (
22+ public func inferredSuperclassType (
2323 isExpected: Bool ?
2424 ) throws -> TypeSyntax ? {
2525 switch isExpected {
26+ case nil :
27+ return inferredSuperclassType ( )
2628 case true :
27- if let superclass = unverifiedInferredSuperclass {
28- return superclass
29+ if let type = unverifiedInferredSuperclassType {
30+ return type
2931 }
3032 throw DiagnosticsError (
3133 node: self ,
3234 message: " \( name. trimmed) should have a superclass "
3335 )
3436 case false :
3537 return nil
36- case nil :
37- return inferredSuperclass ( )
3838 }
3939 }
4040}
4141
4242extension ClassDeclSyntax {
4343
44- private final class SubclassKeywordsVisitor : SyntaxVisitor {
44+ private final class SuperclassVerifier : SyntaxVisitor {
4545
4646 private let classDecl : ClassDeclSyntax
4747 private var didVerify = false
@@ -51,13 +51,13 @@ extension ClassDeclSyntax {
5151 super. init ( viewMode: . sourceAccurate)
5252 }
5353
54- func verifiedSuperclass( ) -> TypeSyntax ? {
55- guard let unverified = classDecl. unverifiedInferredSuperclass else {
54+ func verifiedSuperclassType( ) -> TypeSyntax ? {
55+ if let unverified = classDecl. unverifiedInferredSuperclassType {
56+ walk ( classDecl)
57+ return didVerify ? unverified : nil
58+ } else {
5659 return nil
5760 }
58-
59- walk ( classDecl)
60- return didVerify ? unverified : nil
6161 }
6262
6363 override func visit( _ node: ClassDeclSyntax ) -> SyntaxVisitorContinueKind {
0 commit comments