Skip to content

Commit 28794d2

Browse files
authored
Merge pull request #2783 from DougGregor/ifconfig-diag-cleanup
Minor fixes and cleanups for SwiftIfConfig diagnostics
2 parents 8eaab36 + 181d116 commit 28794d2

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

Sources/SwiftIfConfig/IfConfigError.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ enum IfConfigError: Error, CustomStringConvertible {
4646
return "build configuration cannot handle '\(name)'"
4747

4848
case .requiresUnlabeledArgument(name: let name, role: let role, syntax: _):
49-
return "\(name) requires a single unlabeled argument for the \(role)"
49+
return "'\(name)' requires a single unlabeled argument for the \(role)"
5050

5151
case .unsupportedVersionOperator(name: let name, operator: let op):
5252
return "'\(name)' version check does not support operator '\(op.trimmedDescription)'"
@@ -69,13 +69,13 @@ enum IfConfigError: Error, CustomStringConvertible {
6969
return "compiler version must not have more than five components"
7070

7171
case .canImportMissingModule(syntax: _):
72-
return "canImport requires a module name"
72+
return "'canImport' requires a module name"
7373

7474
case .canImportLabel(syntax: _):
75-
return "second parameter of canImport should be labeled as _version or _underlyingVersion"
75+
return "second parameter of 'canImport' should be labeled as _version or _underlyingVersion"
7676

7777
case .canImportTwoParameters(syntax: _):
78-
return "canImport can take only two parameters"
78+
return "'canImport' can take only two parameters"
7979

8080
case .ignoredTrailingComponents(version: let version, syntax: _):
8181
return "trailing components of version '\(version.description)' are ignored"

Sources/SwiftIfConfig/SyntaxLiteralUtils.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ extension TupleExprSyntax {
2828
extension LabeledExprListSyntax {
2929
/// If this list is a single, unlabeled expression, return it.
3030
var singleUnlabeledExpression: ExprSyntax? {
31-
guard count == 1, let element = first else { return nil }
31+
guard count == 1, let element = first, element.label == nil else { return nil }
3232
return element.expression
3333
}
3434
}

Tests/SwiftIfConfigTest/EvaluateTests.swift

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,19 @@ public class EvaluateTests: XCTestCase {
308308
)
309309
]
310310
)
311+
312+
assertIfConfig(
313+
"swift(version: >=5.5)",
314+
.unparsed,
315+
diagnostics: [
316+
DiagnosticSpec(
317+
message: "'swift' requires a single unlabeled argument for the version comparison (>= or <= a version)",
318+
line: 1,
319+
column: 1,
320+
severity: .error
321+
)
322+
]
323+
)
311324
}
312325

313326
func testCanImport() throws {
@@ -361,7 +374,7 @@ public class EvaluateTests: XCTestCase {
361374
.unparsed,
362375
diagnostics: [
363376
DiagnosticSpec(
364-
message: #"second parameter of canImport should be labeled as _version or _underlyingVersion"#,
377+
message: #"second parameter of 'canImport' should be labeled as _version or _underlyingVersion"#,
365378
line: 1,
366379
column: 14,
367380
severity: .error
@@ -374,7 +387,7 @@ public class EvaluateTests: XCTestCase {
374387
.unparsed,
375388
diagnostics: [
376389
DiagnosticSpec(
377-
message: #"canImport can take only two parameters"#,
390+
message: #"'canImport' can take only two parameters"#,
378391
line: 1,
379392
column: 1,
380393
severity: .error

0 commit comments

Comments
 (0)