File tree Expand file tree Collapse file tree 2 files changed +10
-24
lines changed
Sources/SyntaxSparrow/Internal/Extensions
Tests/SyntaxSparrowTests/Supporting Types Expand file tree Collapse file tree 2 files changed +10
-24
lines changed Original file line number Diff line number Diff line change @@ -18,27 +18,13 @@ extension SyntaxProtocol {
1818 func resolveIsSyntaxOptional( viewMode: SyntaxTreeViewMode = . fixedUp) -> Bool {
1919 guard self . as ( OptionalTypeSyntax . self) == nil else { return true }
2020 guard parent? . as ( OptionalTypeSyntax . self) == nil else { return true }
21- // Token assessment approach
22- var result = false
23- var nextToken = nextToken ( viewMode: . fixedUp)
24- var potentialOptional : Bool = nextToken? . text == " ? "
25- while nextToken != nil {
26- if nextToken? . text == " ) " {
27- potentialOptional = true
28- }
29- if potentialOptional, nextToken? . text == " ) " {
30- break
31- }
32- if potentialOptional, nextToken? . text == " ? " {
33- result = true
34- break
35- }
36- nextToken = nextToken? . nextToken ( viewMode: . fixedUp)
21+ if let parent = parent? . as ( TypeAnnotationSyntax . self) {
22+ return parent. type. as ( OptionalTypeSyntax . self) != nil
23+ } else if let tupleElement = self . as ( TupleTypeElementSyntax . self) {
24+ return tupleElement. type. as ( OptionalTypeSyntax . self) != nil
25+ } else if let generic = self . as ( GenericArgumentSyntax . self) {
26+ return generic. argument. as ( OptionalTypeSyntax . self) != nil
3727 }
38- // Fallback child approach
39- if !result, children ( viewMode: viewMode) . contains ( where: { $0. syntaxNodeType == OptionalTypeSyntax . self } ) {
40- return true
41- }
42- return result
28+ return false
4329 }
4430}
Original file line number Diff line number Diff line change @@ -78,7 +78,7 @@ final class EntityTypeTests: XCTestCase {
7878 func test_array_asVariable_willReturnExpectedTypes( ) throws {
7979 let source = """
8080 var arrayShorthand: [(name: String, age: Int?)]?
81- var arrayIdentifier: Array<String>)
81+ var arrayIdentifier: Array<String>?
8282 """
8383 instanceUnderTest. updateToSource ( source)
8484 XCTAssertTrue ( instanceUnderTest. isStale)
@@ -111,11 +111,11 @@ final class EntityTypeTests: XCTestCase {
111111 target = instanceUnderTest. variables [ 1 ]
112112 XCTAssertEqual ( target. keyword, " var " )
113113 XCTAssertEqual ( target. name, " arrayIdentifier " )
114- XCTAssertFalse ( target. isOptional)
114+ XCTAssertTrue ( target. isOptional)
115115
116116 if case let EntityType . array( array) = target. type {
117117 XCTAssertEqual ( array. declType, . generic)
118- XCTAssertFalse ( array. isOptional)
118+ XCTAssertTrue ( array. isOptional)
119119 XCTAssertEqual ( array. elementType, . simple( " String " ) )
120120 } else {
121121 XCTFail ( " variable type should be Array " )
You can’t perform that action at this time.
0 commit comments