-
Notifications
You must be signed in to change notification settings - Fork 302
[6.0] Syntactic refactorings "Add documentation" and "Add Codable structs for JSON" #1235
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
Closed
DougGregor
wants to merge
8
commits into
swiftlang:release/6.0
from
DougGregor:more-syntax-refactorings-6.0
Closed
[6.0] Syntactic refactorings "Add documentation" and "Add Codable structs for JSON" #1235
DougGregor
wants to merge
8
commits into
swiftlang:release/6.0
from
DougGregor:more-syntax-refactorings-6.0
Conversation
This file contains hidden or 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
…toringProvider Rather than only adapt refactoring actions that conform to SyntaxRefactoringProvider, which takes a syntax node and produces a syntax node, adapt to the less-constraining EditRefactoringProvider, which takes a syntax node and produces edits. We can map edits over just as effectively. (cherry picked from commit ab32186)
…unction This code action takes an undocumented function declaration like func refactor(syntax: DeclSyntax, in context: Void) -> DeclSyntax? and adds stub documentation for the parameters / result / etc., like this: /// A description /// - Parameters: /// - syntax: /// - context: /// /// - Returns: (cherry picked from commit b628738)
(cherry picked from commit c298626)
…duplicating indentation inferring logic (cherry picked from commit f8d0c60)
(cherry picked from commit 329e3d3)
Add a syntactic action that takes JSON pasted into a Swift file or placed in a string literal, then turns it into a set of Codable structs that can represent the JSON. Our typical example starts like this: ``` { "name": "Produce", "shelves": [ { "name": "Discount Produce", "product": { "name": "Banana", "points": 200, "description": "A banana that's perfectly ripe." } } ] } ``` and turns into this: ```swift struct JSONValue: Codable { var name: String var shelves: [Shelves] struct Shelves: Codable { var name: String var product: Product struct Product: Codable { var description: String var name: String var points: Double } } } ``` When converting to JSON, we attempt to reason about multiple JSON objects on the same level to detect when there are optional fields, due to either an explicit null or due to the absence of fields in some of the JSON objects that are conceptually stored together. The refactoring itself would live down in the swift-syntax package if not for its dependency on Foundation. We'll move it when appropriate. (cherry picked from commit e54c99e)
(cherry picked from commit 037e55e)
(cherry picked from commit d4bbf9c)
@swift-ci please test |
I’m cherry-picking PRs from |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Explanation: Introduce more syntactic refactorings "Add documentation" and "Add Codable structs for JSON"
Original PR: #1205, #1206
Risk: Low. Adds a few more syntactic refactorings.
Radar/issue: rdar://127143627
Reviewed by: @ahoppen
Testing: New tests.