Skip to content

Commit 4fae4e8

Browse files
committed
[WIP] Use SwiftSyntax's new SwiftParser
Pulls in swiftlang/swift-syntax#857
1 parent da75cdc commit 4fae4e8

File tree

53 files changed

+232
-108
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+232
-108
lines changed

BUILD

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ swift_library(
2121
visibility = ["//visibility:public"],
2222
deps = [
2323
"@com_github_jpsim_sourcekitten//:SourceKittenFramework",
24-
"@com_github_keith_swift_syntax//:SwiftSyntax",
25-
"@com_github_keith_swift_syntax//:SwiftSyntaxBuilder",
26-
"@com_github_keith_swift_syntax//:SwiftSyntaxParser",
24+
"@com_github_apple_swift_syntax//:SwiftSyntax",
25+
"@com_github_apple_swift_syntax//:SwiftSyntaxBuilder",
26+
"@com_github_apple_swift_syntax//:SwiftParser",
2727
"@sourcekitten_com_github_jpsim_yams//:Yams",
2828
] + select({
2929
"@platforms//os:linux": ["@com_github_krzyzanowskim_cryptoswift//:CryptoSwift"],

Package.resolved

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,18 @@ import PackageDescription
33

44
#if os(macOS)
55
private let addCryptoSwift = false
6-
private let staticSwiftSyntax = true
76
#else
87
private let addCryptoSwift = true
9-
private let staticSwiftSyntax = false
108
#endif
119

1210
let frameworkDependencies: [Target.Dependency] = [
1311
.product(name: "SourceKittenFramework", package: "SourceKitten"),
1412
.product(name: "SwiftSyntax", package: "SwiftSyntax"),
1513
.product(name: "SwiftSyntaxBuilder", package: "SwiftSyntax"),
16-
.product(name: "SwiftSyntaxParser", package: "SwiftSyntax"),
14+
.product(name: "SwiftParser", package: "SwiftSyntax"),
1715
"Yams",
1816
]
1917
+ (addCryptoSwift ? ["CryptoSwift"] : [])
20-
+ (staticSwiftSyntax ? ["lib_InternalSwiftSyntaxParser"] : [])
2118

2219
let package = Package(
2320
name: "SwiftLint",
@@ -28,7 +25,7 @@ let package = Package(
2825
],
2926
dependencies: [
3027
.package(name: "swift-argument-parser", url: "https://github.com/apple/swift-argument-parser.git", .upToNextMinor(from: "1.1.3")),
31-
.package(name: "SwiftSyntax", url: "https://github.com/apple/swift-syntax.git", .exact("0.50700.0")),
28+
.package(name: "SwiftSyntax", url: "https://github.com/jpsim/swift-syntax.git", .revision("e7083742f6dbc5588e56b70271f127fb392f40eb")),
3229
.package(url: "https://github.com/jpsim/SourceKitten.git", from: "0.33.0"),
3330
.package(url: "https://github.com/jpsim/Yams.git", from: "5.0.1"),
3431
.package(url: "https://github.com/scottrhoyt/SwiftyTextTable.git", from: "0.9.0"),
@@ -46,11 +43,7 @@ let package = Package(
4643
),
4744
.target(
4845
name: "SwiftLintFramework",
49-
dependencies: frameworkDependencies,
50-
// Pass `-dead_strip_dylibs` to ignore the dynamic version of `lib_InternalSwiftSyntaxParser`
51-
// that ships with SwiftSyntax because we want the static version from
52-
// `StaticInternalSwiftSyntaxParser`.
53-
linkerSettings: staticSwiftSyntax ? [.unsafeFlags(["-Xlinker", "-dead_strip_dylibs"])] : []
46+
dependencies: frameworkDependencies
5447
),
5548
.testTarget(
5649
name: "SwiftLintFrameworkTests",
@@ -61,9 +54,5 @@ let package = Package(
6154
"Resources",
6255
]
6356
),
64-
] + (staticSwiftSyntax ? [.binaryTarget(
65-
name: "lib_InternalSwiftSyntaxParser",
66-
url: "https://github.com/keith/StaticInternalSwiftSyntaxParser/releases/download/5.7/lib_InternalSwiftSyntaxParser.xcframework.zip",
67-
checksum: "99803975d10b2664fc37cc223a39b4e37fe3c79d3d6a2c44432007206d49db15"
68-
)] : [])
57+
]
6958
)

Source/SwiftLintFramework/Extensions/SourceFileSyntax+SwiftLint.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import SwiftSyntax
22

33
extension SourceFileSyntax {
44
func windowsOfThreeTokens() -> [(TokenSyntax, TokenSyntax, TokenSyntax)] {
5-
Array(tokens)
5+
Array(tokens(viewMode: .sourceAccurate))
66
.windows(ofCount: 3)
77
.map { tokens in
88
let previous = tokens[tokens.startIndex]

Source/SwiftLintFramework/Extensions/SwiftLintFile+Cache.swift

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import Foundation
22
import SourceKittenFramework
3+
import SwiftParser
34
import SwiftSyntax
4-
#if canImport(SwiftSyntaxParser)
5-
import SwiftSyntaxParser
6-
#endif
75

86
private let warnSyntaxParserFailureOnceImpl: Void = {
97
queuedPrintError("Could not parse the syntax tree for at least one file. Results may be invalid.")
@@ -38,7 +36,7 @@ private var structureDictionaryCache = Cache({ file in
3836

3937
private var syntaxTreeCache = Cache({ file -> SourceFileSyntax? in
4038
do {
41-
return try SyntaxParser.parse(source: file.contents)
39+
return try Parser.parse(source: file.contents)
4240
} catch {
4341
warnSyntaxParserFailureOnce()
4442
return nil

Source/SwiftLintFramework/Helpers/CommandVisitor.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ final class CommandVisitor: SyntaxVisitor {
99

1010
init(locationConverter: SourceLocationConverter) {
1111
self.locationConverter = locationConverter
12-
super.init()
12+
super.init(viewMode: .sourceAccurate)
1313
}
1414

1515
override func visitPost(_ node: TokenSyntax) {

Source/SwiftLintFramework/Rules/Idiomatic/BlockBasedKVORule.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public struct BlockBasedKVORule: SwiftSyntaxRule, ConfigurationProviderRule {
3636
)
3737

3838
public func makeVisitor(file: SwiftLintFile) -> ViolationsSyntaxVisitor? {
39-
Visitor()
39+
Visitor(viewMode: .sourceAccurate)
4040
}
4141
}
4242

Source/SwiftLintFramework/Rules/Idiomatic/DiscouragedObjectLiteralRule.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ private extension DiscouragedObjectLiteralRule {
4444

4545
init(configuration: ObjectLiteralConfiguration) {
4646
self.configuration = configuration
47+
super.init(viewMode: .sourceAccurate)
4748
}
4849

4950
override func visitPost(_ node: ObjectLiteralExprSyntax) {

Source/SwiftLintFramework/Rules/Idiomatic/DiscouragedOptionalBooleanRule.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public struct DiscouragedOptionalBooleanRule: OptInRule, ConfigurationProviderRu
1515
)
1616

1717
public func makeVisitor(file: SwiftLintFile) -> ViolationsSyntaxVisitor? {
18-
Visitor()
18+
Visitor(viewMode: .sourceAccurate)
1919
}
2020
}
2121

Source/SwiftLintFramework/Rules/Idiomatic/FallthroughRule.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public struct FallthroughRule: SwiftSyntaxRule, ConfigurationProviderRule, OptIn
3131
)
3232

3333
public func makeVisitor(file: SwiftLintFile) -> ViolationsSyntaxVisitor? {
34-
Visitor()
34+
Visitor(viewMode: .sourceAccurate)
3535
}
3636
}
3737

0 commit comments

Comments
 (0)