@@ -476,6 +476,31 @@ private struct ActionToken {
476476 }
477477 }
478478
479+ static private func expectedResultImpl( for token: TokenSyntax , parent: Syntax ) -> ExpectedResult {
480+ if let parent = parent. as ( DeclReferenceExprSyntax . self) , parent. baseName == token {
481+ if let refArgs = parent. argumentNames {
482+ let name = SwiftName ( base: token. text, labels: refArgs. arguments. map { $0. name. text } )
483+ return ExpectedResult ( name: name, kind: . reference)
484+ }
485+ if let ( kind, callArgs) = getParentArgs ( of: parent) {
486+ let name = SwiftName ( base: token. text, labels: callArgs)
487+ return ExpectedResult ( name: name, kind: kind)
488+ }
489+ if let parentsParent = parent. parent? . as ( MemberAccessExprSyntax . self) , parentsParent. declName. baseName == token {
490+ if let refArgs = parentsParent. declName. argumentNames {
491+ let name = SwiftName ( base: token. text, labels: refArgs. arguments. map { $0. name. text } )
492+ return ExpectedResult ( name: name, kind: . reference)
493+ }
494+ if let ( kind, callArgs) = getParentArgs ( of: parentsParent) {
495+ let name = SwiftName ( base: token. text, labels: callArgs)
496+ return ExpectedResult ( name: name, kind: kind)
497+ }
498+ }
499+ }
500+ let name = SwiftName ( base: token. text, labels: [ ] )
501+ return ExpectedResult ( name: name, kind: . reference)
502+ }
503+
479504 /// A nil result means the results shouldn't be checked, e.g. if the provided token corresponds to the
480505 /// name of a newly declared variable.
481506 static private func expectedResult( for token: TokenSyntax ) -> ExpectedResult ? {
@@ -503,28 +528,7 @@ private struct ActionToken {
503528 return nil
504529 }
505530 }
506- if let parent = parent. as ( DeclReferenceExprSyntax . self) , parent. baseName == token {
507- if let refArgs = parent. argumentNames {
508- let name = SwiftName ( base: token. text, labels: refArgs. arguments. map { $0. name. text } )
509- return ExpectedResult ( name: name, kind: . reference)
510- }
511- if let ( kind, callArgs) = getParentArgs ( of: parent) {
512- let name = SwiftName ( base: token. text, labels: callArgs)
513- return ExpectedResult ( name: name, kind: kind)
514- }
515- if let parentsParent = parent. parent? . as ( MemberAccessExprSyntax . self) , parentsParent. declName. baseName == token {
516- if let refArgs = parentsParent. declName. argumentNames {
517- let name = SwiftName ( base: token. text, labels: refArgs. arguments. map { $0. name. text } )
518- return ExpectedResult ( name: name, kind: . reference)
519- }
520- if let ( kind, callArgs) = getParentArgs ( of: parentsParent) {
521- let name = SwiftName ( base: token. text, labels: callArgs)
522- return ExpectedResult ( name: name, kind: kind)
523- }
524- }
525- }
526- let name = SwiftName ( base: token. text, labels: [ ] )
527- return ExpectedResult ( name: name, kind: . reference)
531+ return expectedResultImpl ( for: token, parent: parent)
528532 }
529533
530534 static func getParentArgs< T: SyntaxProtocol > ( of syntax: T ) -> ( kind: ExpectedResult . Kind , args: [ String ] ) ? {
0 commit comments