diff --git a/Package.resolved b/Package.resolved index cdd1e2f110..9e068b0c96 100644 --- a/Package.resolved +++ b/Package.resolved @@ -32,8 +32,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-syntax.git", "state" : { - "revision" : "07c08da983b2815a0acc8e3a477573e4c663b158", - "version" : "509.0.0-swift-DEVELOPMENT-SNAPSHOT-2023-03-17-a" + "revision" : "2a9988f32c3439b1c850673cfccb085ddcde1395", + "version" : "509.0.0-swift-5.9-DEVELOPMENT-SNAPSHOT-2023-04-10-a" } }, { diff --git a/Package.swift b/Package.swift index eaa060357b..6708494ae4 100644 --- a/Package.swift +++ b/Package.swift @@ -31,7 +31,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/apple/swift-argument-parser.git", .upToNextMinor(from: "1.2.1")), - .package(url: "https://github.com/apple/swift-syntax.git", exact: "509.0.0-swift-DEVELOPMENT-SNAPSHOT-2023-03-17-a"), + .package(url: "https://github.com/apple/swift-syntax.git", exact: "509.0.0-swift-5.9-DEVELOPMENT-SNAPSHOT-2023-04-10-a"), .package(url: "https://github.com/jpsim/SourceKitten.git", .upToNextMinor(from: "0.34.1")), .package(url: "https://github.com/jpsim/Yams.git", from: "5.0.5"), .package(url: "https://github.com/scottrhoyt/SwiftyTextTable.git", from: "0.9.0"), diff --git a/Source/SwiftLintFramework/Extensions/SwiftSyntax+SwiftLint.swift b/Source/SwiftLintFramework/Extensions/SwiftSyntax+SwiftLint.swift index bacd3c5c9c..a63ca77c39 100644 --- a/Source/SwiftLintFramework/Extensions/SwiftSyntax+SwiftLint.swift +++ b/Source/SwiftLintFramework/Extensions/SwiftSyntax+SwiftLint.swift @@ -231,7 +231,7 @@ extension FunctionDeclSyntax { name += "(" let params = signature.input.parameterList.compactMap { param in - (param.firstName ?? param.secondName)?.text.appending(":") + param.firstName.text.appending(":") } name += params.joined() diff --git a/Source/SwiftLintFramework/Extensions/SyntaxClassification+isComment.swift b/Source/SwiftLintFramework/Extensions/SyntaxClassification+isComment.swift index f3e7bf5ae5..26211d7fce 100644 --- a/Source/SwiftLintFramework/Extensions/SyntaxClassification+isComment.swift +++ b/Source/SwiftLintFramework/Extensions/SyntaxClassification+isComment.swift @@ -8,7 +8,7 @@ extension SyntaxClassification { return true case .none, .keyword, .identifier, .typeIdentifier, .operatorIdentifier, .dollarIdentifier, .integerLiteral, .floatingLiteral, .stringLiteral, .stringInterpolationAnchor, .poundDirectiveKeyword, .buildConfigId, - .attribute, .objectLiteral, .editorPlaceholder: + .attribute, .objectLiteral, .editorPlaceholder, .regexLiteral: return false } } diff --git a/Source/SwiftLintFramework/Helpers/LegacyFunctionRuleHelper.swift b/Source/SwiftLintFramework/Helpers/LegacyFunctionRuleHelper.swift index fa4a902888..6b3a9f9758 100644 --- a/Source/SwiftLintFramework/Helpers/LegacyFunctionRuleHelper.swift +++ b/Source/SwiftLintFramework/Helpers/LegacyFunctionRuleHelper.swift @@ -82,8 +82,8 @@ enum LegacyFunctionRuleHelper { } return expr - .with(\.leadingTrivia, node.leadingTrivia ?? .zero) - .with(\.trailingTrivia, node.trailingTrivia ?? .zero) + .with(\.leadingTrivia, node.leadingTrivia) + .with(\.trailingTrivia, node.trailingTrivia) } } } diff --git a/Source/SwiftLintFramework/Rules/Idiomatic/BlockBasedKVORule.swift b/Source/SwiftLintFramework/Rules/Idiomatic/BlockBasedKVORule.swift index 5f39b0eb46..38ac7f0cb8 100644 --- a/Source/SwiftLintFramework/Rules/Idiomatic/BlockBasedKVORule.swift +++ b/Source/SwiftLintFramework/Rules/Idiomatic/BlockBasedKVORule.swift @@ -47,13 +47,13 @@ private extension BlockBasedKVORule { case let parameterList = node.signature.input.parameterList, parameterList.count == 4, node.identifier.text == "observeValue", - parameterList.compactMap(\.firstName?.text) == ["forKeyPath", "of", "change", "context"] + parameterList.map(\.firstName.text) == ["forKeyPath", "of", "change", "context"] else { return } let types = parameterList - .compactMap { $0.type?.trimmedDescription.replacingOccurrences(of: " ", with: "") } + .map { $0.type.trimmedDescription.replacingOccurrences(of: " ", with: "") } let firstTypes = ["String?", "Any?", "[NSKeyValueChangeKey:Any]?", "UnsafeMutableRawPointer?"] let secondTypes = ["String?", "Any?", "Dictionary?", "UnsafeMutableRawPointer?"] if types == firstTypes || types == secondTypes { diff --git a/Source/SwiftLintFramework/Rules/Idiomatic/FunctionDefaultParameterAtEndRule.swift b/Source/SwiftLintFramework/Rules/Idiomatic/FunctionDefaultParameterAtEndRule.swift index c997f3cf6c..fc59b856df 100644 --- a/Source/SwiftLintFramework/Rules/Idiomatic/FunctionDefaultParameterAtEndRule.swift +++ b/Source/SwiftLintFramework/Rules/Idiomatic/FunctionDefaultParameterAtEndRule.swift @@ -104,20 +104,20 @@ private extension FunctionSignatureSyntax { private extension FunctionParameterSyntax { var isClosure: Bool { - if isEscaping || type?.as(FunctionTypeSyntax.self) != nil { + if isEscaping || type.is(FunctionTypeSyntax.self) { return true } - if let optionalType = type?.as(OptionalTypeSyntax.self), + if let optionalType = type.as(OptionalTypeSyntax.self), let tuple = optionalType.wrappedType.as(TupleTypeSyntax.self) { return tuple.elements.onlyElement?.type.as(FunctionTypeSyntax.self) != nil } - if let tuple = type?.as(TupleTypeSyntax.self) { + if let tuple = type.as(TupleTypeSyntax.self) { return tuple.elements.onlyElement?.type.as(FunctionTypeSyntax.self) != nil } - if let attrType = type?.as(AttributedTypeSyntax.self) { + if let attrType = type.as(AttributedTypeSyntax.self) { return attrType.baseType.is(FunctionTypeSyntax.self) } @@ -125,7 +125,7 @@ private extension FunctionParameterSyntax { } var isEscaping: Bool { - guard let attrType = type?.as(AttributedTypeSyntax.self) else { + guard let attrType = type.as(AttributedTypeSyntax.self) else { return false } diff --git a/Source/SwiftLintFramework/Rules/Idiomatic/LegacyConstantRule.swift b/Source/SwiftLintFramework/Rules/Idiomatic/LegacyConstantRule.swift index b80ee66b17..e506029de8 100644 --- a/Source/SwiftLintFramework/Rules/Idiomatic/LegacyConstantRule.swift +++ b/Source/SwiftLintFramework/Rules/Idiomatic/LegacyConstantRule.swift @@ -63,8 +63,8 @@ private extension LegacyConstantRule { correctionPositions.append(node.positionAfterSkippingLeadingTrivia) return ("\(raw: correction)" as ExprSyntax) - .with(\.leadingTrivia, node.leadingTrivia ?? .zero) - .with(\.trailingTrivia, node.trailingTrivia ?? .zero) + .with(\.leadingTrivia, node.leadingTrivia) + .with(\.trailingTrivia, node.trailingTrivia) } override func visit(_ node: FunctionCallExprSyntax) -> ExprSyntax { @@ -78,8 +78,8 @@ private extension LegacyConstantRule { correctionPositions.append(node.positionAfterSkippingLeadingTrivia) return ("\(raw: calledExpression.identifier.text).pi" as ExprSyntax) - .with(\.leadingTrivia, node.leadingTrivia ?? .zero) - .with(\.trailingTrivia, node.trailingTrivia ?? .zero) + .with(\.leadingTrivia, node.leadingTrivia) + .with(\.trailingTrivia, node.trailingTrivia) } } } diff --git a/Source/SwiftLintFramework/Rules/Idiomatic/PreferZeroOverExplicitInitRule.swift b/Source/SwiftLintFramework/Rules/Idiomatic/PreferZeroOverExplicitInitRule.swift index f6dd04072d..78d5c858ff 100644 --- a/Source/SwiftLintFramework/Rules/Idiomatic/PreferZeroOverExplicitInitRule.swift +++ b/Source/SwiftLintFramework/Rules/Idiomatic/PreferZeroOverExplicitInitRule.swift @@ -80,8 +80,8 @@ private extension PreferZeroOverExplicitInitRule { .with(\.base, "\(raw: name)") return super.visit( newNode - .with(\.leadingTrivia, node.leadingTrivia ?? .zero) - .with(\.trailingTrivia, node.trailingTrivia ?? .zero) + .with(\.leadingTrivia, node.leadingTrivia) + .with(\.trailingTrivia, node.trailingTrivia) ) } } diff --git a/Source/SwiftLintFramework/Rules/Idiomatic/PrivateOverFilePrivateRule.swift b/Source/SwiftLintFramework/Rules/Idiomatic/PrivateOverFilePrivateRule.swift index 705e5e8e83..84ceec2e6a 100644 --- a/Source/SwiftLintFramework/Rules/Idiomatic/PrivateOverFilePrivateRule.swift +++ b/Source/SwiftLintFramework/Rules/Idiomatic/PrivateOverFilePrivateRule.swift @@ -252,8 +252,8 @@ private extension ModifierListSyntax { \.name, .keyword( .private, - leadingTrivia: fileprivateModifier.leadingTrivia ?? .zero, - trailingTrivia: fileprivateModifier.trailingTrivia ?? .zero + leadingTrivia: fileprivateModifier.leadingTrivia, + trailingTrivia: fileprivateModifier.trailingTrivia ) ) ) diff --git a/Source/SwiftLintFramework/Rules/Idiomatic/RedundantOptionalInitializationRule.swift b/Source/SwiftLintFramework/Rules/Idiomatic/RedundantOptionalInitializationRule.swift index 00cbbb3b58..50fa96e4d3 100644 --- a/Source/SwiftLintFramework/Rules/Idiomatic/RedundantOptionalInitializationRule.swift +++ b/Source/SwiftLintFramework/Rules/Idiomatic/RedundantOptionalInitializationRule.swift @@ -170,9 +170,9 @@ private extension RedundantOptionalInitializationRule { return newBinding } if binding.trailingComma != nil { - return newBinding.with(\.typeAnnotation, binding.typeAnnotation?.with(\.trailingTrivia, .zero)) + return newBinding.with(\.typeAnnotation, binding.typeAnnotation?.with(\.trailingTrivia, Trivia())) } - return newBinding.with(\.trailingTrivia, binding.initializer?.trailingTrivia ?? .zero) + return newBinding.with(\.trailingTrivia, binding.initializer?.trailingTrivia ?? Trivia()) }) return super.visit(node.with(\.bindings, newBindings)) diff --git a/Source/SwiftLintFramework/Rules/Idiomatic/ShorthandOptionalBindingRule.swift b/Source/SwiftLintFramework/Rules/Idiomatic/ShorthandOptionalBindingRule.swift index 1f8b2b2580..8d5e6a7f40 100644 --- a/Source/SwiftLintFramework/Rules/Idiomatic/ShorthandOptionalBindingRule.swift +++ b/Source/SwiftLintFramework/Rules/Idiomatic/ShorthandOptionalBindingRule.swift @@ -122,7 +122,7 @@ private class Rewriter: SyntaxRewriter, ViolationsSyntaxRewriter { correctionPositions.append(node.positionAfterSkippingLeadingTrivia) let newNode = node .with(\.initializer, nil) - .with(\.pattern, node.pattern.with(\.trailingTrivia, node.trailingTrivia ?? .zero)) + .with(\.pattern, node.pattern.with(\.trailingTrivia, node.trailingTrivia)) return super.visit(newNode) } } diff --git a/Source/SwiftLintFramework/Rules/Idiomatic/ToggleBoolRule.swift b/Source/SwiftLintFramework/Rules/Idiomatic/ToggleBoolRule.swift index 0b648bc2c8..78ec7b18a7 100644 --- a/Source/SwiftLintFramework/Rules/Idiomatic/ToggleBoolRule.swift +++ b/Source/SwiftLintFramework/Rules/Idiomatic/ToggleBoolRule.swift @@ -79,8 +79,8 @@ private extension ToggleBoolRule { ) .removingLast() .removingLast() - .with(\.leadingTrivia, node.leadingTrivia ?? .zero) - .with(\.trailingTrivia, node.trailingTrivia ?? .zero) + .with(\.leadingTrivia, node.leadingTrivia) + .with(\.trailingTrivia, node.trailingTrivia) return super.visit(newNode) } diff --git a/Source/SwiftLintFramework/Rules/Idiomatic/TrailingSemicolonRule.swift b/Source/SwiftLintFramework/Rules/Idiomatic/TrailingSemicolonRule.swift index a4f5494266..6cb57a0225 100644 --- a/Source/SwiftLintFramework/Rules/Idiomatic/TrailingSemicolonRule.swift +++ b/Source/SwiftLintFramework/Rules/Idiomatic/TrailingSemicolonRule.swift @@ -66,7 +66,7 @@ private extension TrailingSemicolonRule { } correctionPositions.append(node.positionAfterSkippingLeadingTrivia) - return .unknown("").with(\.trailingTrivia, node.trailingTrivia ?? .zero) + return .unknown("").with(\.trailingTrivia, node.trailingTrivia) } } } diff --git a/Source/SwiftLintFramework/Rules/Lint/AnyObjectProtocolRule.swift b/Source/SwiftLintFramework/Rules/Lint/AnyObjectProtocolRule.swift index bc7590fdd2..739bfeb75c 100644 --- a/Source/SwiftLintFramework/Rules/Lint/AnyObjectProtocolRule.swift +++ b/Source/SwiftLintFramework/Rules/Lint/AnyObjectProtocolRule.swift @@ -87,8 +87,8 @@ private extension AnyObjectProtocolRule { \.typeName, TypeSyntax( SimpleTypeIdentifierSyntax(name: .identifier("AnyObject"), genericArgumentClause: nil) - .with(\.leadingTrivia, typeName.leadingTrivia ?? .zero) - .with(\.trailingTrivia, typeName.trailingTrivia ?? .zero) + .with(\.leadingTrivia, typeName.leadingTrivia) + .with(\.trailingTrivia, typeName.trailingTrivia) ) ) ) diff --git a/Source/SwiftLintFramework/Rules/Lint/ArrayInitRule.swift b/Source/SwiftLintFramework/Rules/Lint/ArrayInitRule.swift index 91f095e373..715636aa30 100644 --- a/Source/SwiftLintFramework/Rules/Lint/ArrayInitRule.swift +++ b/Source/SwiftLintFramework/Rules/Lint/ArrayInitRule.swift @@ -104,9 +104,9 @@ private extension ClosureSignatureSyntax { func singleInputParamText() -> String? { if let list = input?.as(ClosureParamListSyntax.self), list.count == 1 { return list.onlyElement?.name.text - } else if let clause = input?.as(ParameterClauseSyntax.self), clause.parameterList.count == 1, + } else if let clause = input?.as(ClosureParameterClauseSyntax.self), clause.parameterList.count == 1, clause.parameterList.first?.secondName == nil { - return clause.parameterList.first?.firstName?.text + return clause.parameterList.first?.firstName.text } else { return nil } diff --git a/Source/SwiftLintFramework/Rules/Lint/LowerACLThanParentRule.swift b/Source/SwiftLintFramework/Rules/Lint/LowerACLThanParentRule.swift index 7488f43666..88276e1ec6 100644 --- a/Source/SwiftLintFramework/Rules/Lint/LowerACLThanParentRule.swift +++ b/Source/SwiftLintFramework/Rules/Lint/LowerACLThanParentRule.swift @@ -125,13 +125,13 @@ private extension LowerACLThanParentRule { let newNode: DeclModifierSyntax if node.name.tokenKind == .keyword(.open) { newNode = DeclModifierSyntax( - leadingTrivia: node.leadingTrivia ?? .zero, + leadingTrivia: node.leadingTrivia, name: .keyword(.public), trailingTrivia: .space ) } else { newNode = DeclModifierSyntax( - leadingTrivia: node.leadingTrivia ?? .zero, + leadingTrivia: node.leadingTrivia, name: .identifier("") ) } diff --git a/Source/SwiftLintFramework/Rules/Lint/NSObjectPreferIsEqualRule.swift b/Source/SwiftLintFramework/Rules/Lint/NSObjectPreferIsEqualRule.swift index d944323d53..0809913639 100644 --- a/Source/SwiftLintFramework/Rules/Lint/NSObjectPreferIsEqualRule.swift +++ b/Source/SwiftLintFramework/Rules/Lint/NSObjectPreferIsEqualRule.swift @@ -56,11 +56,9 @@ private extension FunctionDeclSyntax { parameterList.count == 2, let lhs = parameterList.first, let rhs = parameterList.last, - lhs.firstName?.text == "lhs", - rhs.firstName?.text == "rhs", - let lhsTypeDescription = lhs.type?.trimmedDescription, - let rhsTypeDescription = rhs.type?.trimmedDescription, - lhsTypeDescription == rhsTypeDescription + lhs.firstName.text == "lhs", + rhs.firstName.text == "rhs", + lhs.type.trimmedDescription == rhs.type.trimmedDescription else { return false } diff --git a/Source/SwiftLintFramework/Rules/Lint/PrivateUnitTestRule.swift b/Source/SwiftLintFramework/Rules/Lint/PrivateUnitTestRule.swift index 7ae33cea17..10aac471fd 100644 --- a/Source/SwiftLintFramework/Rules/Lint/PrivateUnitTestRule.swift +++ b/Source/SwiftLintFramework/Rules/Lint/PrivateUnitTestRule.swift @@ -224,17 +224,17 @@ private class Rewriter: SyntaxRewriter, ViolationsSyntaxRewriter { return (nil, declKeyword) } var filteredModifiers = [DeclModifierSyntax]() - var leadingTrivia = Trivia.zero + var leadingTrivia = Trivia() for modifier in modifiers { - let accumulatedLeadingTrivia = leadingTrivia + (modifier.leadingTrivia ?? .zero) + let accumulatedLeadingTrivia = leadingTrivia + (modifier.leadingTrivia) if modifier.name.tokenKind == .keyword(.private) { leadingTrivia = accumulatedLeadingTrivia } else { filteredModifiers.append(modifier.with(\.leadingTrivia, accumulatedLeadingTrivia)) - leadingTrivia = .zero + leadingTrivia = Trivia() } } - let declKeyword = declKeyword.with(\.leadingTrivia, leadingTrivia + (declKeyword.leadingTrivia ?? .zero)) + let declKeyword = declKeyword.with(\.leadingTrivia, leadingTrivia + (declKeyword.leadingTrivia)) return (ModifierListSyntax(filteredModifiers), declKeyword) } } diff --git a/Source/SwiftLintFramework/Rules/Lint/UnusedClosureParameterRule.swift b/Source/SwiftLintFramework/Rules/Lint/UnusedClosureParameterRule.swift index 8923c7e28b..ea555bb5eb 100644 --- a/Source/SwiftLintFramework/Rules/Lint/UnusedClosureParameterRule.swift +++ b/Source/SwiftLintFramework/Rules/Lint/UnusedClosureParameterRule.swift @@ -69,16 +69,13 @@ private extension UnusedClosureParameterRule { .walk(tree: node.statements, handler: \.identifiers) guard let params = input.as(ClosureParamListSyntax.self) else { - guard let params = input.as(ParameterClauseSyntax.self) else { + guard let params = input.as(ClosureParameterClauseSyntax.self) else { return super.visit(node) } var newParams = params for (index, param) in params.parameterList.enumerated() { - guard let name = param.firstName else { - continue - } - + let name = param.firstName if name.tokenKind == .wildcard { continue } else if referencedIdentifiers.contains(name.text.removingDollarsAndBackticks) { @@ -148,17 +145,15 @@ private extension ClosureExprSyntax { name: param.name.text.removingDollarsAndBackticks ) } - } else if let params = signature?.input?.as(ParameterClauseSyntax.self)?.parameterList { + } else if let params = signature?.input?.as(ClosureParameterClauseSyntax.self)?.parameterList { return params.compactMap { param in - if param.firstName?.tokenKind == .wildcard { + if param.firstName.tokenKind == .wildcard { return nil } - return param.firstName.map { name in - ClosureParam( - position: name.positionAfterSkippingLeadingTrivia, - name: name.text.removingDollarsAndBackticks - ) - } + return ClosureParam( + position: param.firstName.positionAfterSkippingLeadingTrivia, + name: param.firstName.text.removingDollarsAndBackticks + ) } } else { return [] diff --git a/Source/SwiftLintFramework/Rules/Lint/UnusedControlFlowLabelRule.swift b/Source/SwiftLintFramework/Rules/Lint/UnusedControlFlowLabelRule.swift index 10bb4b54d6..47df229fda 100644 --- a/Source/SwiftLintFramework/Rules/Lint/UnusedControlFlowLabelRule.swift +++ b/Source/SwiftLintFramework/Rules/Lint/UnusedControlFlowLabelRule.swift @@ -122,7 +122,7 @@ private extension UnusedControlFlowLabelRule { return super.visit(node) } - let newNode = node.statement.with(\.leadingTrivia, node.leadingTrivia ?? .zero) + let newNode = node.statement.with(\.leadingTrivia, node.leadingTrivia) correctionPositions.append(violationPosition) return visit(newNode).as(StmtSyntax.self) ?? newNode } diff --git a/Source/SwiftLintFramework/Rules/Style/AttributesRule.swift b/Source/SwiftLintFramework/Rules/Style/AttributesRule.swift index 4e7e940919..9405ce1d78 100644 --- a/Source/SwiftLintFramework/Rules/Style/AttributesRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/AttributesRule.swift @@ -68,10 +68,10 @@ private extension AttributesRule { } let hasMultipleNewlines = node.children(viewMode: .sourceAccurate).enumerated().contains { index, element in - if index > 0 && element.leadingTrivia?.hasMultipleNewlines == true { + if index > 0 && element.leadingTrivia.hasMultipleNewlines == true { return true } else { - return element.trailingTrivia?.hasMultipleNewlines == true + return element.trailingTrivia.hasMultipleNewlines == true } } diff --git a/Source/SwiftLintFramework/Rules/Style/ClosingBraceRule.swift b/Source/SwiftLintFramework/Rules/Style/ClosingBraceRule.swift index 2ac4e968fd..13e549a9e7 100644 --- a/Source/SwiftLintFramework/Rules/Style/ClosingBraceRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/ClosingBraceRule.swift @@ -63,7 +63,7 @@ private extension ClosingBraceRule { } correctionPositions.append(node.positionAfterSkippingLeadingTrivia) - return super.visit(node.with(\.trailingTrivia, .zero)) + return super.visit(node.with(\.trailingTrivia, Trivia())) } } } diff --git a/Source/SwiftLintFramework/Rules/Style/ClosureParameterPositionRule.swift b/Source/SwiftLintFramework/Rules/Style/ClosureParameterPositionRule.swift index d708a0318e..14ad30bda4 100644 --- a/Source/SwiftLintFramework/Rules/Style/ClosureParameterPositionRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/ClosureParameterPositionRule.swift @@ -140,7 +140,7 @@ private extension ClosureSignatureSyntax { if let input = input?.as(ClosureParamListSyntax.self) { positions.append(contentsOf: input.map(\.positionAfterSkippingLeadingTrivia)) - } else if let input = input?.as(ParameterClauseSyntax.self) { + } else if let input = input?.as(ClosureParameterClauseSyntax.self) { positions.append(contentsOf: input.parameterList.map(\.positionAfterSkippingLeadingTrivia)) } diff --git a/Source/SwiftLintFramework/Rules/Style/DirectReturnRule.swift b/Source/SwiftLintFramework/Rules/Style/DirectReturnRule.swift index 5f941a8eb6..b12737a16f 100644 --- a/Source/SwiftLintFramework/Rules/Style/DirectReturnRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/DirectReturnRule.swift @@ -245,9 +245,9 @@ private class Rewriter: SyntaxRewriter, ViolationsSyntaxRewriter { item: .stmt(StmtSyntax(returnStmt.with(\.expression, initExpression))) )) } else { - let leadingTrivia = (varDecl.leadingTrivia?.withoutTrailingIndentation ?? .zero) - + (varDecl.trailingTrivia ?? .zero) - + (returnStmt.leadingTrivia?.withFirstEmptyLineRemoved ?? .zero) + let leadingTrivia = varDecl.leadingTrivia.withoutTrailingIndentation + + varDecl.trailingTrivia + + returnStmt.leadingTrivia.withFirstEmptyLineRemoved newStmtList.append( CodeBlockItemSyntax( item: .stmt( diff --git a/Source/SwiftLintFramework/Rules/Style/EmptyEnumArgumentsRule.swift b/Source/SwiftLintFramework/Rules/Style/EmptyEnumArgumentsRule.swift index 26850376c7..c20f0d7f7c 100644 --- a/Source/SwiftLintFramework/Rules/Style/EmptyEnumArgumentsRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/EmptyEnumArgumentsRule.swift @@ -222,7 +222,7 @@ private extension FunctionCallExprSyntax { if argumentList.allSatisfy({ $0.expression.is(DiscardAssignmentExprSyntax.self) }) { let newCalledExpression = calledExpression - .with(\.trailingTrivia, rightParen?.trailingTrivia ?? .zero) + .with(\.trailingTrivia, rightParen?.trailingTrivia ?? Trivia()) let newExpression = self .with(\.calledExpression, ExprSyntax(newCalledExpression)) .with(\.leftParen, nil) diff --git a/Source/SwiftLintFramework/Rules/Style/InclusiveLanguageRule.swift b/Source/SwiftLintFramework/Rules/Style/InclusiveLanguageRule.swift index 5c03f84cd5..6a901463cf 100644 --- a/Source/SwiftLintFramework/Rules/Style/InclusiveLanguageRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/InclusiveLanguageRule.swift @@ -94,7 +94,7 @@ private extension InclusiveLanguageRule { } override func visitPost(_ node: FunctionParameterSyntax) { - if let name = node.firstName, let violation = violation(for: name) { + if let violation = violation(for: node.firstName) { violations.append(violation) } diff --git a/Source/SwiftLintFramework/Rules/Style/MultilineArgumentsBracketsRule.swift b/Source/SwiftLintFramework/Rules/Style/MultilineArgumentsBracketsRule.swift index dfc5d9adee..d64179c408 100644 --- a/Source/SwiftLintFramework/Rules/Style/MultilineArgumentsBracketsRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/MultilineArgumentsBracketsRule.swift @@ -194,9 +194,7 @@ private extension MultilineArgumentsBracketsRule { } private func hasLeadingNewline(_ syntax: SyntaxProtocol) -> Bool { - guard let leadingTrivia = syntax.leadingTrivia else { return false } - - return leadingTrivia.pieces.contains { $0.isNewline } + syntax.leadingTrivia.contains(where: \.isNewline) } } } diff --git a/Source/SwiftLintFramework/Rules/Style/NoSpaceInMethodCallRule.swift b/Source/SwiftLintFramework/Rules/Style/NoSpaceInMethodCallRule.swift index d4c369514e..e52b2567a9 100644 --- a/Source/SwiftLintFramework/Rules/Style/NoSpaceInMethodCallRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/NoSpaceInMethodCallRule.swift @@ -98,13 +98,8 @@ private extension NoSpaceInMethodCallRule { private extension FunctionCallExprSyntax { var hasNoSpaceInMethodCallViolation: Bool { - guard leftParen != nil, - !calledExpression.is(TupleExprSyntax.self), - let trailingTrivia = calledExpression.trailingTrivia, - trailingTrivia.isNotEmpty else { - return false - } - - return true + leftParen != nil && + !calledExpression.is(TupleExprSyntax.self) && + calledExpression.trailingTrivia.isNotEmpty } } diff --git a/Source/SwiftLintFramework/Rules/Style/PreferSelfTypeOverTypeOfSelfRule.swift b/Source/SwiftLintFramework/Rules/Style/PreferSelfTypeOverTypeOfSelfRule.swift index 3a3322ab52..1fb1081373 100644 --- a/Source/SwiftLintFramework/Rules/Style/PreferSelfTypeOverTypeOfSelfRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/PreferSelfTypeOverTypeOfSelfRule.swift @@ -149,8 +149,8 @@ private extension PreferSelfTypeOverTypeOfSelfRule { let base = IdentifierExprSyntax(identifier: "Self") let baseWithTrivia = base - .with(\.leadingTrivia, function.leadingTrivia ?? .zero) - .with(\.trailingTrivia, function.trailingTrivia ?? .zero) + .with(\.leadingTrivia, function.leadingTrivia) + .with(\.trailingTrivia, function.trailingTrivia) return super.visit(node.with(\.base, ExprSyntax(baseWithTrivia))) } } diff --git a/Source/SwiftLintFramework/Rules/Style/SelfBindingRule.swift b/Source/SwiftLintFramework/Rules/Style/SelfBindingRule.swift index add85d050f..1ac41971aa 100644 --- a/Source/SwiftLintFramework/Rules/Style/SelfBindingRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/SelfBindingRule.swift @@ -142,7 +142,7 @@ private final class SelfBindingRuleRewriter: SyntaxRewriter, ViolationsSyntaxRew identifier: .keyword( .`self`, leadingTrivia: .space, - trailingTrivia: identifierPattern.trailingTrivia ?? .space + trailingTrivia: identifierPattern.trailingTrivia ) ) ) diff --git a/Source/SwiftLintFramework/Rules/Style/TrailingCommaRule.swift b/Source/SwiftLintFramework/Rules/Style/TrailingCommaRule.swift index 0977409d4f..4432215501 100644 --- a/Source/SwiftLintFramework/Rules/Style/TrailingCommaRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/TrailingCommaRule.swift @@ -135,7 +135,7 @@ private extension TrailingCommaRule { switch (lastElement.trailingComma, mandatoryComma) { case (let commaToken?, false): correctionPositions.append(commaToken.positionAfterSkippingLeadingTrivia) - let newTrailingTrivia = (lastElement.valueExpression.trailingTrivia ?? .zero) + let newTrailingTrivia = (lastElement.valueExpression.trailingTrivia) .appending(trivia: commaToken.leadingTrivia) .appending(trivia: commaToken.trailingTrivia) let newNode = node @@ -154,7 +154,7 @@ private extension TrailingCommaRule { with: lastElement .with(\.trailingTrivia, []) .with(\.trailingComma, .commaToken()) - .with(\.trailingTrivia, lastElement.trailingTrivia ?? .zero) + .with(\.trailingTrivia, lastElement.trailingTrivia) ) return super.visit(newNode) case (_, true), (nil, false): @@ -177,7 +177,7 @@ private extension TrailingCommaRule { with: lastElement .with(\.trailingComma, nil) .with(\.trailingTrivia, - (lastElement.expression.trailingTrivia ?? .zero) + (lastElement.expression.trailingTrivia) .appending(trivia: commaToken.leadingTrivia) .appending(trivia: commaToken.trailingTrivia) ) @@ -190,7 +190,7 @@ private extension TrailingCommaRule { with: lastElement .with(\.expression, lastElement.expression.with(\.trailingTrivia, [])) .with(\.trailingComma, .commaToken()) - .with(\.trailingTrivia, lastElement.expression.trailingTrivia ?? .zero) + .with(\.trailingTrivia, lastElement.expression.trailingTrivia) ) return super.visit(newNode) case (_, true), (nil, false): diff --git a/Source/SwiftLintFramework/Rules/Style/UnneededParenthesesInClosureArgumentRule.swift b/Source/SwiftLintFramework/Rules/Style/UnneededParenthesesInClosureArgumentRule.swift index 6b81886bf6..9322ac668f 100644 --- a/Source/SwiftLintFramework/Rules/Style/UnneededParenthesesInClosureArgumentRule.swift +++ b/Source/SwiftLintFramework/Rules/Style/UnneededParenthesesInClosureArgumentRule.swift @@ -89,9 +89,9 @@ struct UnneededParenthesesInClosureArgumentRule: ConfigurationProviderRule, private final class Visitor: ViolationsSyntaxVisitor { override func visitPost(_ node: ClosureSignatureSyntax) { - guard let clause = node.input?.as(ParameterClauseSyntax.self), - !clause.parameterList.contains(where: { $0.type != nil }), - clause.parameterList.isNotEmpty else { + guard let clause = node.input?.as(ClosureParameterClauseSyntax.self), + clause.parameterList.isNotEmpty, + clause.parameterList.allSatisfy({ $0.type == nil }) else { return } @@ -111,19 +111,16 @@ private final class Rewriter: SyntaxRewriter, ViolationsSyntaxRewriter { override func visit(_ node: ClosureSignatureSyntax) -> ClosureSignatureSyntax { guard - let clause = node.input?.as(ParameterClauseSyntax.self), - !clause.parameterList.contains(where: { $0.type != nil }), + let clause = node.input?.as(ClosureParameterClauseSyntax.self), clause.parameterList.isNotEmpty, + clause.parameterList.allSatisfy({ $0.type == nil }), !node.isContainedIn(regions: disabledRegions, locationConverter: locationConverter) else { return super.visit(node) } let items = clause.parameterList.enumerated().compactMap { idx, param -> ClosureParamSyntax? in - guard let name = param.firstName else { - return nil - } - + let name = param.firstName let isLast = idx == clause.parameterList.count - 1 return ClosureParamSyntax( name: name, diff --git a/bazel/repos.bzl b/bazel/repos.bzl index 1e64de0526..3aa3f0c9ec 100644 --- a/bazel/repos.bzl +++ b/bazel/repos.bzl @@ -20,10 +20,10 @@ def swiftlint_repos(bzlmod = False): http_archive( name = "com_github_apple_swift_syntax", - sha256 = "0698b10d5784bc91fc60cd740f8c16dbe7debcea67759fdf293bb1c8bdb6eedc", # SwiftSyntax sha256 + sha256 = "3b9380abc9a3d15fc718d87f1c278d978078d777bb03e3861b904aad6ef6bb54", # SwiftSyntax sha256 build_file = "@SwiftLint//bazel:SwiftSyntax.BUILD", - strip_prefix = "swift-syntax-509.0.0-swift-DEVELOPMENT-SNAPSHOT-2023-03-17-a", - url = "https://github.com/apple/swift-syntax/archive/refs/tags/509.0.0-swift-DEVELOPMENT-SNAPSHOT-2023-03-17-a.tar.gz", + strip_prefix = "swift-syntax-509.0.0-swift-5.9-DEVELOPMENT-SNAPSHOT-2023-04-10-a", + url = "https://github.com/apple/swift-syntax/archive/refs/tags/509.0.0-swift-5.9-DEVELOPMENT-SNAPSHOT-2023-04-10-a.tar.gz", ) http_archive(