Skip to content

Commit 402ab05

Browse files
committed
Move SwiftParser/Diagnostics to its own module
Just a bit of cleanup I wanted to do to keep the modules small and focused. The idea is that SwiftParser just creates a SwiftSyntax tree and SwiftParserDiagnositcs produces nice error messages for such a tree.
1 parent 2016c7e commit 402ab05

19 files changed

+62
-17
lines changed

Package.swift

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ let package = Package(
9595
),
9696
.target(
9797
name: "SwiftSyntaxBuilder",
98-
dependencies: ["SwiftBasicFormat", "SwiftSyntax", "SwiftParser"],
98+
dependencies: ["SwiftBasicFormat", "SwiftSyntax", "SwiftParser", "SwiftParserDiagnostics"],
9999
exclude: [
100100
"gyb_helpers",
101101
"SyntaxExpressibleByStringInterpolationConformances.swift.gyb",
@@ -116,7 +116,7 @@ let package = Package(
116116
),
117117
.target(
118118
name: "SwiftParser",
119-
dependencies: ["SwiftBasicFormat", "SwiftDiagnostics", "SwiftSyntax"],
119+
dependencies: ["SwiftDiagnostics", "SwiftSyntax"],
120120
exclude: [
121121
"CMakeLists.txt",
122122
"README.md",
@@ -125,6 +125,13 @@ let package = Package(
125125
"DeclarationAttribute.swift.gyb",
126126
]
127127
),
128+
.target(
129+
name: "SwiftParserDiagnostics",
130+
dependencies: ["SwiftBasicFormat", "SwiftDiagnostics", "SwiftSyntax"],
131+
exclude: [
132+
"CMakeLists.txt",
133+
]
134+
),
128135
.target(
129136
name: "SwiftOperators",
130137
dependencies: ["SwiftSyntax", "SwiftParser", "SwiftDiagnostics"],
@@ -134,8 +141,8 @@ let package = Package(
134141
),
135142
.target(
136143
name: "SwiftCompilerSupport",
137-
dependencies: [
138-
"SwiftSyntax", "SwiftParser", "SwiftDiagnostics", "SwiftOperators"],
144+
dependencies: ["SwiftSyntax", "SwiftParser", "SwiftParserDiagnostics",
145+
"SwiftDiagnostics", "SwiftOperators"],
139146
exclude: [
140147
"CMakeLists.txt",
141148
"SwiftCompilerSupport.h"
@@ -155,7 +162,7 @@ let package = Package(
155162
),
156163
.executableTarget(
157164
name: "swift-parser-cli",
158-
dependencies: ["SwiftDiagnostics", "SwiftSyntax", "SwiftParser", "SwiftOperators", "_SwiftSyntaxMacros",
165+
dependencies: ["SwiftDiagnostics", "SwiftSyntax", "SwiftParser", "SwiftParserDiagnostics", "SwiftOperators", "_SwiftSyntaxMacros",
159166
.product(name: "ArgumentParser", package: "swift-argument-parser")]
160167
),
161168
.testTarget(
@@ -191,6 +198,10 @@ let package = Package(
191198
dependencies: ["SwiftDiagnostics", "SwiftOperators", "SwiftParser",
192199
"_SwiftSyntaxTestSupport", "SwiftSyntaxBuilder"]
193200
),
201+
.testTarget(
202+
name: "SwiftParserDiagnosticsTest",
203+
dependencies: ["SwiftDiagnostics", "SwiftParserDiagnostics"]
204+
),
194205
.testTarget(
195206
name: "SwiftOperatorsTest",
196207
dependencies: ["SwiftOperators", "_SwiftSyntaxTestSupport",

Sources/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ add_subdirectory(SwiftBasicFormat)
1010
add_subdirectory(SwiftSyntax)
1111
add_subdirectory(SwiftDiagnostics)
1212
add_subdirectory(SwiftParser)
13+
add_subdirectory(SwiftParserDiagnostics)
1314
add_subdirectory(SwiftOperators)
1415
add_subdirectory(SwiftSyntaxBuilder)
1516
add_subdirectory(_SwiftSyntaxMacros)

Sources/SwiftCompilerSupport/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ target_link_libraries(SwiftCompilerSupport PUBLIC
1414
SwiftSyntax
1515
SwiftDiagnostics
1616
SwiftParser
17+
SwiftParserDiagnostics
1718
SwiftOperators
1819
)
1920

Sources/SwiftCompilerSupport/ConsistencyCheck.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import SwiftOperators
1414
@_spi(Testing) @_spi(RawSyntax) import SwiftParser
15+
import SwiftParserDiagnostics
1516
@_spi(RawSyntax) import SwiftSyntax
1617

1718
extension Syntax {

Sources/SwiftParser/CMakeLists.txt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,11 @@ add_library(SwiftParser STATIC
3131
TriviaParser.swift
3232
Types.swift
3333

34-
Diagnostics/DiagnosticExtensions.swift
35-
Diagnostics/MissingNodesError.swift
36-
Diagnostics/ParserDiagnosticMessages.swift
37-
Diagnostics/ParseDiagnosticsGenerator.swift
38-
Diagnostics/PresenceUtils.swift
39-
Diagnostics/SyntaxExtensions.swift
40-
Diagnostics/Utils.swift
41-
4234
gyb_generated/DeclarationAttribute.swift
4335
gyb_generated/DeclarationModifier.swift
4436
gyb_generated/TypeAttribute.swift)
4537

4638
target_link_libraries(SwiftParser PUBLIC
47-
SwiftBasicFormat
4839
SwiftSyntax
4940
SwiftDiagnostics)
5041

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# This source file is part of the Swift.org open source project
2+
#
3+
# Copyright (c) 2014 - 2022 Apple Inc. and the Swift project authors
4+
# Licensed under Apache License v2.0 with Runtime Library Exception
5+
#
6+
# See http://swift.org/LICENSE.txt for license information
7+
# See http://swift.org/CONTRIBUTORS.txt for Swift project authors
8+
9+
add_library(SwiftParserDiagnostics STATIC
10+
DiagnosticExtensions.swift
11+
MissingNodesError.swift
12+
ParserDiagnosticMessages.swift
13+
ParseDiagnosticsGenerator.swift
14+
PresenceUtils.swift
15+
SyntaxExtensions.swift
16+
Utils.swift)
17+
18+
target_link_libraries(SwiftParserDiagnostics PUBLIC
19+
SwiftBasicFormat
20+
SwiftSyntax
21+
SwiftDiagnostics)
22+
23+
set_property(GLOBAL APPEND PROPERTY SWIFTSYNTAX_EXPORTS SwiftParserDiagnostics)
24+
25+
# NOTE: workaround for CMake not setting up include flags yet
26+
set_target_properties(SwiftParserDiagnostics PROPERTIES
27+
INTERFACE_INCLUDE_DIRECTORIES
28+
"${CMAKE_Swift_MODULE_DIRECTORY} ${CMAKE_CURRENT_SOURCE_DIR}")
29+
30+
install(TARGETS SwiftParserDiagnostics
31+
EXPORT SwiftSyntaxTargets
32+
ARCHIVE DESTINATION lib
33+
LIBRARY DESTINATION lib
34+
RUNTIME DESTINATION bin)

Sources/SwiftParser/Diagnostics/ParseDiagnosticsGenerator.swift renamed to Sources/SwiftParserDiagnostics/ParseDiagnosticsGenerator.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ public class ParseDiagnosticsGenerator: SyntaxAnyVisitor {
377377
}
378378
exchangeTokens(
379379
unexpected: node.unexpectedBetweenModifiersAndFirstName,
380-
unexpectedTokenCondition: { TypeSpecifier(token: $0) != nil },
380+
unexpectedTokenCondition: { _ in true },
381381
correctTokens: [node.type?.as(AttributedTypeSyntax.self)?.specifier],
382382
message: { SpecifierOnParameterName(misplacedSpecifiers: $0) },
383383
moveFixIt: { MoveTokensInFrontOfTypeFixIt(movedTokens: $0) },
@@ -636,7 +636,7 @@ public class ParseDiagnosticsGenerator: SyntaxAnyVisitor {
636636
}
637637
exchangeTokens(
638638
unexpected: node.unexpectedBetweenInOutAndName,
639-
unexpectedTokenCondition: { TypeSpecifier(token: $0) != nil },
639+
unexpectedTokenCondition: { _ in true },
640640
correctTokens: [node.type.as(AttributedTypeSyntax.self)?.specifier],
641641
message: { SpecifierOnParameterName(misplacedSpecifiers: $0) },
642642
moveFixIt: { MoveTokensInFrontOfTypeFixIt(movedTokens: $0) },

Sources/SwiftSyntaxBuilder/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ add_library(SwiftSyntaxBuilder STATIC
4242
)
4343

4444
target_link_libraries(SwiftSyntaxBuilder PUBLIC
45+
SwiftBasicFormat
4546
SwiftParser
47+
SwiftParserDiagnostics
4648
SwiftSyntax
4749
)
4850

Sources/SwiftSyntaxBuilder/Syntax+StringInterpolation.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
@_spi(RawSyntax) import SwiftSyntax
1414
@_spi(RawSyntax) import SwiftParser
15+
import SwiftParserDiagnostics
1516
import SwiftDiagnostics
1617
import SwiftBasicFormat
1718

Sources/swift-parser-cli/swift-parser-cli.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import SwiftDiagnostics
1414
import SwiftSyntax
1515
@_spi(Testing) import _SwiftSyntaxMacros
1616
import SwiftParser
17+
import SwiftParserDiagnostics
1718
import SwiftOperators
1819
import Foundation
1920
import ArgumentParser

Tests/SwiftParserTest/DiagnosticInfrastructureTests.swift renamed to Tests/SwiftParserDiagnosticsTest/DiagnosticInfrastructureTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
import XCTest
1414
import SwiftDiagnostics
15-
import SwiftParser
15+
import SwiftParserDiagnostics
1616

1717
public class DiagnosticInfrastructureTests: XCTestCase {
1818
public func testDiagnosticID() {

Tests/SwiftParserTest/Assertions.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import XCTest
1414
@_spi(RawSyntax) import SwiftSyntax
1515
@_spi(Testing) @_spi(RawSyntax) import SwiftParser
16+
import SwiftParserDiagnostics
1617
import SwiftDiagnostics
1718
import _SwiftSyntaxTestSupport
1819

Tests/SwiftParserTest/ParserTests.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Dispatch
1515
import XCTest
1616
import SwiftSyntax
1717
import SwiftParser
18+
import SwiftParserDiagnostics
1819

1920
public class ParserTests: XCTestCase {
2021
/// Run a single parse test.

0 commit comments

Comments
 (0)