Skip to content

Commit b5902e4

Browse files
committed
Factor out expectedResultImpl(for:)
1 parent 3f5f866 commit b5902e4

File tree

1 file changed

+26
-22
lines changed

1 file changed

+26
-22
lines changed

SourceKitStressTester/Sources/StressTester/ActionGenerators.swift

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)