Skip to content
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
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,9 @@ private struct ActionToken {
case .functionCallExpr: fallthrough
case .subscriptExpr: fallthrough
case .expressionSegment:
guard tupleElem.indexInParent != 0 else { return nil }
if tupleElem.parent?.as(TupleExprElementListSyntax.self)?.first == tupleElem {
return nil
}
return ExpectedResult(name: SwiftName(base: token.textWithoutBackticks + ":", labels: []), kind: .reference)
default:
return nil
Expand Down
2 changes: 1 addition & 1 deletion SwiftEvolve/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ let package = Package(
),
.target(
name: "SwiftEvolve",
dependencies: ["SwiftToolsSupport-auto", "SwiftSyntax", "SwiftSyntaxParser"],
dependencies: ["SwiftToolsSupport-auto", "SwiftSyntax", "SwiftParser"],
linkerSettings: [.unsafeFlags(["-Xlinker", "-rpath", "-Xlinker", sourcekitSearchPath])]
),
.testTarget(
Expand Down
2 changes: 1 addition & 1 deletion SwiftEvolve/Sources/SwiftEvolve/DeclContext.swift
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ public extension Decl {

public extension Decl where Self: DeclWithMembers {
func lookupDirect(_ name: String) -> Decl? {
for item in members.members {
for item in memberBlock.members {
guard let member = item.decl.as(Decl.self) else { continue }
if member.name == name {
return member
Expand Down
6 changes: 3 additions & 3 deletions SwiftEvolve/Sources/SwiftEvolve/Evolver.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ import Foundation
import SwiftSyntax

struct Context {
var syntaxPath: [Int] = []
var syntaxPath: [String] = []
var declContext = DeclContext()

@discardableResult
mutating func enter(_ node: Syntax) -> Bool {
syntaxPath.append(node.indexInParent)
syntaxPath.append(String(describing: node.keyPathInParent!))
if let node = node.as(Decl.self) {
declContext.append(node)
return true
Expand All @@ -43,7 +43,7 @@ struct Context {
}

public class Evolver: SyntaxRewriter {
var plan: [URL: [[Int]: [PlannedEvolution]]]
var plan: [URL: [[String]: [PlannedEvolution]]]
var url: URL!

var context = Context()
Expand Down
2 changes: 1 addition & 1 deletion SwiftEvolve/Sources/SwiftEvolve/Planner.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import SwiftSyntax
public struct PlannedEvolution: Codable {
var sourceLocation: String
var file: URL
var syntaxPath: [Int]
var syntaxPath: [String]
var evolution: AnyEvolution
}

Expand Down
4 changes: 2 additions & 2 deletions SwiftEvolve/Sources/SwiftEvolve/SwiftEvolveTool.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import Foundation
import SwiftSyntax
import SwiftSyntaxParser
import SwiftParser
import TSCBasic

public class SwiftEvolveTool {
Expand Down Expand Up @@ -184,7 +184,7 @@ extension SwiftEvolveTool {
return preparsed
}

let parsed = try SyntaxParser.parse(URL(path))
let parsed = Parser.parse(source: try String(contentsOf: URL(path)))
parsedSourceFiles[path] = parsed
return parsed
}
Expand Down
5 changes: 2 additions & 3 deletions SwiftEvolve/Sources/SwiftEvolve/SyntaxExtensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import SwiftSyntax
import Foundation

public protocol DeclWithMembers: DeclSyntaxProtocol {
var members: MemberDeclBlockSyntax { get set }
var memberBlock: MemberDeclBlockSyntax { get set }
}

extension ClassDeclSyntax: DeclWithMembers {}
Expand Down Expand Up @@ -185,9 +185,8 @@ extension TypeSyntax {

extension TokenKind {
var needsSpace: Bool {
if isLexerClassifiedKeyword { return true }
switch self {
case .identifier, .dollarIdentifier, .integerLiteral, .floatingLiteral, .keyword(.yield):
case .identifier, .dollarIdentifier, .integerLiteral, .floatingLiteral, .keyword:
return true
default:
return false
Expand Down
20 changes: 10 additions & 10 deletions SwiftEvolve/Tests/SwiftEvolveTests/RegressionTests.swift
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import XCTest
import SwiftSyntax
import SwiftSyntaxParser
import SwiftParser
import SwiftEvolve

class RegressionTests: XCTestCase {
var unusedRNG = UnusedGenerator()

func testUnshuffledDeclsStayInOrder() throws {
func testUnshuffledDeclsStayInOrder() {
// Checks that we don't mess up the order of declarations we're not trying
// to shuffle. In particular, if we store the properties in a Set or other
// unordered collection, we could screw this up.
let code = try SyntaxParser.parse(source:
let code = Parser.parse(source:
"""
@_fixed_layout struct X {
var p0: Int
Expand Down Expand Up @@ -44,12 +44,12 @@ class RegressionTests: XCTestCase {
}
}

func testStoredIfConfigBlocksMemberwiseInitSynthesis() throws {
func testStoredIfConfigBlocksMemberwiseInitSynthesis() {
do {
// FIXME: Crashes when run in Xcode because of a version mismatch between
// SwiftSyntax and the compiler it uses (specifically, how they represent
// accessor blocks). Should pass in "env PATH=... swift build".
let code = try SyntaxParser.parse(source:
let code = Parser.parse(source:
"""
struct A {
#if os(iOS)
Expand All @@ -64,7 +64,7 @@ class RegressionTests: XCTestCase {

XCTAssertThrowsError(
try SynthesizeMemberwiseInitializerEvolution(
for: Syntax(decl.members.members), in: dc, using: &unusedRNG
for: Syntax(decl.memberBlock.members), in: dc, using: &unusedRNG
),
"Should throw when a stored property is in a #if block"
)
Expand All @@ -84,7 +84,7 @@ class RegressionTests: XCTestCase {
}

do {
let code = try SyntaxParser.parse(source:
let code = Parser.parse(source:
"""
struct B {
var b1: Int
Expand All @@ -99,7 +99,7 @@ class RegressionTests: XCTestCase {

XCTAssertNoThrow(
try SynthesizeMemberwiseInitializerEvolution(
for: Syntax(decl.members.members), in: dc, using: &unusedRNG
for: Syntax(decl.memberBlock.members), in: dc, using: &unusedRNG
),
"Should not throw when properties are only non-stored"
)
Expand All @@ -119,7 +119,7 @@ class RegressionTests: XCTestCase {
}

do {
let code = try SyntaxParser.parse(source:
let code = Parser.parse(source:
"""
struct C {
#if os(iOS)
Expand All @@ -135,7 +135,7 @@ class RegressionTests: XCTestCase {

XCTAssertNoThrow(
try SynthesizeMemberwiseInitializerEvolution(
for: Syntax(decl.members.members), in: dc, using: &unusedRNG
for: Syntax(decl.memberBlock.members), in: dc, using: &unusedRNG
),
"Should not throw when there's an explicit init"
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import XCTest
import SwiftSyntax
import SwiftSyntaxParser
import SwiftParser
import SwiftEvolve

class ShuffleGenericRequirementsEvolutionTests: XCTestCase {
var predictableRNG = PredictableGenerator(values: 1..<16)

func testEvolution() throws {
let code = try SyntaxParser.parse(source:
let code = Parser.parse(source:
"""
func foo<T>(_: T) where T: Hashable, T == Comparable {}
"""
Expand All @@ -27,8 +27,8 @@ class ShuffleGenericRequirementsEvolutionTests: XCTestCase {
// "T == Comparable , T: Hashable")
}

func testBypass() throws {
let code = try SyntaxParser.parse(source:
func testBypass() {
let code = Parser.parse(source:
"""
func foo<T>(_: T) where T: Hashable, T == Comparable {}
"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import XCTest
import SwiftSyntax
import SwiftSyntaxParser
import SwiftParser
import SwiftEvolve

class ShuffleMembersEvolutionTests: XCTestCase {
var predictableRNG = PredictableGenerator(values: 0..<16)

func testEnumCases() throws {
let code = try SyntaxParser.parse(source:
let code = Parser.parse(source:
"""
enum Foo {
case a
Expand All @@ -19,7 +19,7 @@ class ShuffleMembersEvolutionTests: XCTestCase {
let decl = code.filter(whereIs: EnumDeclSyntax.self).first!
let dc = DeclContext(declarationChain: [code, decl])
let evo = try ShuffleMembersEvolution(
for: Syntax(decl.members.members), in: dc, using: &predictableRNG
for: Syntax(decl.memberBlock.members), in: dc, using: &predictableRNG
)

XCTAssertEqual(evo?.mapping.count, 3)
Expand Down