Skip to content

[5.9] Companion of cherry-picking multiple SwiftSyntax PRs to release/5.9 #514

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions Sources/SwiftFormatPrettyPrint/TokenStreamCreator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
genericParameterOrPrimaryAssociatedTypeClause: node.genericParameterClause.map(Syntax.init),
inheritanceClause: node.inheritanceClause,
genericWhereClause: node.genericWhereClause,
members: node.members)
memberBlock: node.memberBlock)
return .visitChildren
}

Expand All @@ -176,7 +176,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
genericParameterOrPrimaryAssociatedTypeClause: node.genericParameterClause.map(Syntax.init),
inheritanceClause: node.inheritanceClause,
genericWhereClause: node.genericWhereClause,
members: node.members)
memberBlock: node.memberBlock)
return .visitChildren
}

Expand All @@ -190,7 +190,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
genericParameterOrPrimaryAssociatedTypeClause: node.genericParameterClause.map(Syntax.init),
inheritanceClause: node.inheritanceClause,
genericWhereClause: node.genericWhereClause,
members: node.members)
memberBlock: node.memberBlock)
return .visitChildren
}

Expand All @@ -204,7 +204,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
genericParameterOrPrimaryAssociatedTypeClause: node.genericParameters.map(Syntax.init),
inheritanceClause: node.inheritanceClause,
genericWhereClause: node.genericWhereClause,
members: node.members)
memberBlock: node.memberBlock)
return .visitChildren
}

Expand All @@ -219,7 +219,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
node.primaryAssociatedTypeClause.map(Syntax.init),
inheritanceClause: node.inheritanceClause,
genericWhereClause: node.genericWhereClause,
members: node.members)
memberBlock: node.memberBlock)
return .visitChildren
}

Expand All @@ -236,7 +236,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
genericParameterOrPrimaryAssociatedTypeClause: nil,
inheritanceClause: node.inheritanceClause,
genericWhereClause: node.genericWhereClause,
members: node.members)
memberBlock: node.memberBlock)
return .visitChildren
}

Expand All @@ -251,7 +251,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
genericParameterOrPrimaryAssociatedTypeClause: Syntax?,
inheritanceClause: TypeInheritanceClauseSyntax?,
genericWhereClause: GenericWhereClauseSyntax?,
members: MemberDeclBlockSyntax
memberBlock: MemberDeclBlockSyntax
) {
before(node.firstToken, tokens: .open)

Expand All @@ -263,11 +263,11 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
before(firstTokenAfterAttributes, tokens: .open)
after(typeKeyword, tokens: .break)

arrangeBracesAndContents(of: members, contentsKeyPath: \.members)
arrangeBracesAndContents(of: memberBlock, contentsKeyPath: \.members)

if let genericWhereClause = genericWhereClause {
before(genericWhereClause.firstToken, tokens: .break(.same), .open)
after(members.leftBrace, tokens: .close)
after(memberBlock.leftBrace, tokens: .close)
}

let lastTokenBeforeBrace = inheritanceClause?.colon
Expand Down
2 changes: 1 addition & 1 deletion Sources/SwiftFormatRules/AlwaysUseLowerCamelCase.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public final class AlwaysUseLowerCamelCase: SyntaxLintRule {
public override func visit(_ node: ClassDeclSyntax) -> SyntaxVisitorContinueKind {
guard context.importsXCTest == .importsXCTest else { return .visitChildren }

collectTestMethods(from: node.members.members, into: &testCaseFuncs)
collectTestMethods(from: node.memberBlock.members, into: &testCaseFuncs)
return .visitChildren
}

Expand Down
10 changes: 5 additions & 5 deletions Sources/SwiftFormatRules/DontRepeatTypeInStaticProperties.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,27 +23,27 @@ import SwiftSyntax
public final class DontRepeatTypeInStaticProperties: SyntaxLintRule {

public override func visit(_ node: ClassDeclSyntax) -> SyntaxVisitorContinueKind {
diagnoseStaticMembers(node.members.members, endingWith: node.identifier.text)
diagnoseStaticMembers(node.memberBlock.members, endingWith: node.identifier.text)
return .skipChildren
}

public override func visit(_ node: EnumDeclSyntax) -> SyntaxVisitorContinueKind {
diagnoseStaticMembers(node.members.members, endingWith: node.identifier.text)
diagnoseStaticMembers(node.memberBlock.members, endingWith: node.identifier.text)
return .skipChildren
}

public override func visit(_ node: ProtocolDeclSyntax) -> SyntaxVisitorContinueKind {
diagnoseStaticMembers(node.members.members, endingWith: node.identifier.text)
diagnoseStaticMembers(node.memberBlock.members, endingWith: node.identifier.text)
return .skipChildren
}

public override func visit(_ node: StructDeclSyntax) -> SyntaxVisitorContinueKind {
diagnoseStaticMembers(node.members.members, endingWith: node.identifier.text)
diagnoseStaticMembers(node.memberBlock.members, endingWith: node.identifier.text)
return .skipChildren
}

public override func visit(_ node: ExtensionDeclSyntax) -> SyntaxVisitorContinueKind {
let members = node.members.members
let members = node.memberBlock.members

switch Syntax(node.extendedType).as(SyntaxEnum.self) {
case .simpleTypeIdentifier(let simpleType):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ public final class FileScopedDeclarationPrivacy: SyntaxFormatRule {
let name = modifier.name
if name.tokenKind == invalidAccess {
diagnose(diagnostic, on: name)
return modifier.with(\.name, name.withKind(validAccess))
return modifier.with(\.name, name.with(\.tokenKind, validAccess))
}
return modifier
}
Expand Down
6 changes: 3 additions & 3 deletions Sources/SwiftFormatRules/FullyIndirectEnum.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import SwiftSyntax
public final class FullyIndirectEnum: SyntaxFormatRule {

public override func visit(_ node: EnumDeclSyntax) -> DeclSyntax {
let enumMembers = node.members.members
let enumMembers = node.memberBlock.members
guard let enumModifiers = node.modifiers,
!enumModifiers.has(modifier: "indirect"),
allCasesAreIndirect(in: enumMembers)
Expand Down Expand Up @@ -70,8 +70,8 @@ public final class FullyIndirectEnum: SyntaxFormatRule {
name: TokenSyntax.identifier(
"indirect", leadingTrivia: leadingTrivia, trailingTrivia: .spaces(1)), detail: nil)

let newMemberBlock = node.members.with(\.members, MemberDeclListSyntax(newMembers))
return DeclSyntax(newEnumDecl.addModifier(newModifier).with(\.members, newMemberBlock))
let newMemberBlock = node.memberBlock.with(\.members, MemberDeclListSyntax(newMembers))
return DeclSyntax(newEnumDecl.addModifier(newModifier).with(\.memberBlock, newMemberBlock))
}

/// Returns a value indicating whether all enum cases in the given list are indirect.
Expand Down
4 changes: 2 additions & 2 deletions Sources/SwiftFormatRules/ModifierListSyntax+Convenience.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ extension ModifierListSyntax {
/// Returns modifier list without the given modifier.
func remove(name: String) -> ModifierListSyntax {
guard has(modifier: name) else { return self }
for mod in self {
for (index, mod) in self.enumerated() {
if mod.name.text == name {
return removing(childAt: mod.indexInParent)
return removing(childAt: index)
}
}
return self
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,20 @@ public final class NoAccessLevelOnExtensionDeclaration: SyntaxFormatRule {
let accessKeywordToAdd: DeclModifierSyntax
if keywordKind == .keyword(.private) {
accessKeywordToAdd
= accessKeyword.with(\.name, accessKeyword.name.withKind(.keyword(.fileprivate)))
= accessKeyword.with(\.name, accessKeyword.name.with(\.tokenKind, .keyword(.fileprivate)))
} else {
accessKeywordToAdd = accessKeyword
}

let newMembers = MemberDeclBlockSyntax(
leftBrace: node.members.leftBrace,
members: addMemberAccessKeywords(memDeclBlock: node.members, keyword: accessKeywordToAdd),
rightBrace: node.members.rightBrace)
leftBrace: node.memberBlock.leftBrace,
members: addMemberAccessKeywords(memDeclBlock: node.memberBlock, keyword: accessKeywordToAdd),
rightBrace: node.memberBlock.rightBrace)
let newKeyword = replaceTrivia(
on: node.extensionKeyword,
token: node.extensionKeyword,
leadingTrivia: accessKeyword.leadingTrivia)
let result = node.with(\.members, newMembers)
let result = node.with(\.memberBlock, newMembers)
.with(\.modifiers, modifiers.remove(name: accessKeyword.name.text))
.with(\.extensionKeyword, newKeyword)
return DeclSyntax(result)
Expand Down
6 changes: 3 additions & 3 deletions Sources/SwiftFormatRules/OneCasePerLine.swift
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public final class OneCasePerLine: SyntaxFormatRule {
public override func visit(_ node: EnumDeclSyntax) -> DeclSyntax {
var newMembers: [MemberDeclListItemSyntax] = []

for member in node.members.members {
for member in node.memberBlock.members {
// If it's not a case declaration, or it's a case declaration with only one element, leave it
// alone.
guard let caseDecl = member.decl.as(EnumCaseDeclSyntax.self), caseDecl.elements.count > 1 else {
Expand Down Expand Up @@ -123,8 +123,8 @@ public final class OneCasePerLine: SyntaxFormatRule {
}
}

let newMemberBlock = node.members.with(\.members, MemberDeclListSyntax(newMembers))
return DeclSyntax(node.with(\.members, newMemberBlock))
let newMemberBlock = node.memberBlock.with(\.members, MemberDeclListSyntax(newMembers))
return DeclSyntax(node.with(\.memberBlock, newMemberBlock))
}
}

Expand Down
4 changes: 2 additions & 2 deletions Sources/SwiftFormatRules/UseSynthesizedInitializer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public final class UseSynthesizedInitializer: SyntaxLintRule {
var storedProperties: [VariableDeclSyntax] = []
var initializers: [InitializerDeclSyntax] = []

for memberItem in node.members.members {
for memberItem in node.memberBlock.members {
let member = memberItem.decl
// Collect all stored variables into a list
if let varDecl = member.as(VariableDeclSyntax.self) {
Expand Down Expand Up @@ -67,7 +67,7 @@ public final class UseSynthesizedInitializer: SyntaxLintRule {
// The synthesized memberwise initializer(s) are only created when there are no initializers.
// If there are other initializers that cannot be replaced by a synthesized memberwise
// initializer, then all of the initializers must remain.
let initializersCount = node.members.members.filter { $0.decl.is(InitializerDeclSyntax.self) }.count
let initializersCount = node.memberBlock.members.filter { $0.decl.is(InitializerDeclSyntax.self) }.count
if extraneousInitializers.count == initializersCount {
extraneousInitializers.forEach { diagnose(.removeRedundantInitializer, on: $0) }
}
Expand Down
4 changes: 2 additions & 2 deletions Sources/generate-pipeline/RuleCollector.swift
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,11 @@ final class RuleCollector {

if let classDecl = statement.item.as(ClassDeclSyntax.self) {
typeName = classDecl.identifier.text
members = classDecl.members.members
members = classDecl.memberBlock.members
maybeInheritanceClause = classDecl.inheritanceClause
} else if let structDecl = statement.item.as(StructDeclSyntax.self) {
typeName = structDecl.identifier.text
members = structDecl.members.members
members = structDecl.memberBlock.members
maybeInheritanceClause = structDecl.inheritanceClause
} else {
return nil
Expand Down