-
Notifications
You must be signed in to change notification settings - Fork 232
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add
--enable-experimental-feature
to enable those features in the p…
…arser. Also add a couple small tests for value generics to exercise the capability in tests. Fixes #875.
- Loading branch information
Showing
11 changed files
with
176 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
//===----------------------------------------------------------------------===// | ||
// | ||
// This source file is part of the Swift.org open source project | ||
// | ||
// Copyright (c) 2014 - 2024 Apple Inc. and the Swift project authors | ||
// Licensed under Apache License v2.0 with Runtime Library Exception | ||
// | ||
// See https://swift.org/LICENSE.txt for license information | ||
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors | ||
// | ||
//===----------------------------------------------------------------------===// | ||
|
||
@_spi(ExperimentalLanguageFeatures) import SwiftParser | ||
import SwiftSyntax | ||
import XCTest | ||
|
||
extension Parser { | ||
/// Parses the given source string and returns the corresponding `SourceFileSyntax` node. | ||
/// | ||
/// - Parameters: | ||
/// - source: The source text to parse. | ||
/// - experimentalFeatures: The set of experimental features that should be enabled in the | ||
/// parser. | ||
@_spi(Testing) | ||
public static func parse( | ||
source: String, | ||
experimentalFeatures: Parser.ExperimentalFeatures | ||
) -> SourceFileSyntax { | ||
var source = source | ||
return source.withUTF8 { sourceBytes in | ||
parse( | ||
source: sourceBytes, | ||
experimentalFeatures: experimentalFeatures | ||
) | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
Tests/SwiftFormatTests/PrettyPrint/ValueGenericsTests.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
@_spi(ExperimentalLanguageFeatures) import SwiftParser | ||
|
||
final class ValueGenericsTests: PrettyPrintTestCase { | ||
func testValueGenericDeclaration() { | ||
let input = "struct Foo<let n: Int> { static let bar = n }" | ||
let expected = """ | ||
struct Foo< | ||
let n: Int | ||
> { | ||
static let bar = n | ||
} | ||
""" | ||
assertPrettyPrintEqual( | ||
input: input, | ||
expected: expected, | ||
linelength: 20, | ||
experimentalFeatures: [.valueGenerics] | ||
) | ||
} | ||
|
||
func testValueGenericTypeUsage() { | ||
let input = | ||
""" | ||
let v1: Vector<100, Int> | ||
let v2 = Vector<100, Int>() | ||
""" | ||
let expected = """ | ||
let v1: | ||
Vector< | ||
100, Int | ||
> | ||
let v2 = | ||
Vector< | ||
100, Int | ||
>() | ||
""" | ||
assertPrettyPrintEqual( | ||
input: input, | ||
expected: expected, | ||
linelength: 15, | ||
experimentalFeatures: [.valueGenerics] | ||
) | ||
} | ||
} |
Oops, something went wrong.