Unified: Split up corpus tests and their generated outputs#22086
Open
asgerf wants to merge 2 commits into
Open
Unified: Split up corpus tests and their generated outputs#22086asgerf wants to merge 2 commits into
asgerf wants to merge 2 commits into
Conversation
The corpus tests interleaved hand-written content (test cases) with generated content (printed ASTs). This made merge conflicts hard to resolve because you can't just regnerate the printed ASTs without potentially throwing away new test cases that came from either branch (or depending on whether the merge conflict markers appeared, the corpus test could be ruined completely). The old design did have one nice advantage: Reviewers could see the printed ASTs alongside the source code from which it was generated. To preserve this feature, the source code for the test case is itself included in the generated output file.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR restructures Unified Swift corpus tests by separating handwritten test inputs from generated outputs, reducing merge conflicts and making regeneration safer while still keeping source context alongside the printed ASTs.
Changes:
- Replaces legacy multi-case
*.txtcorpus files with one*.swiftinput file plus one corresponding*.outputgenerated file per test case. - Updates the Rust test harness (
corpus_tests.rs) to discover*.swift/*.outputpairs, validate sync, and regenerate outputs in update mode. - Updates Unified agent docs to describe the new corpus test layout and regeneration workflow.
Show a summary per file
| File | Description |
|---|---|
| unified/AGENTS.md | Documents the new per-test .swift + .output corpus structure and regeneration guidance. |
| unified/extractor/tests/corpus_tests.rs | Updates corpus test discovery/parsing/rendering for per-file .swift + .output cases (and update-mode regeneration). |
| unified/extractor/tests/corpus/swift/variables/assignment.swift | New corpus case source: assignment. |
| unified/extractor/tests/corpus/swift/variables/assignment.output | Generated output for corpus case: assignment. |
| unified/extractor/tests/corpus/swift/variables/compound-assignment.swift | New corpus case source: compound assignment. |
| unified/extractor/tests/corpus/swift/variables/compound-assignment.output | Generated output for corpus case: compound assignment. |
| unified/extractor/tests/corpus/swift/variables/let-binding.swift | New corpus case source: let binding. |
| unified/extractor/tests/corpus/swift/variables/let-binding.output | Generated output for corpus case: let binding. |
| unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.swift | New corpus case source: let with type annotation. |
| unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.output | Generated output for corpus case: let with type annotation. |
| unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.swift | New corpus case source: multiple bindings on one line. |
| unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.output | Generated output for corpus case: multiple bindings on one line. |
| unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.swift | New corpus case source: property observers (willSet/didSet). |
| unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.output | Generated output for corpus case: property observers (willSet/didSet). |
| unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.swift | New corpus case source: tuple destructuring binding. |
| unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.output | Generated output for corpus case: tuple destructuring binding. |
| unified/extractor/tests/corpus/swift/variables/var-binding.swift | New corpus case source: var binding. |
| unified/extractor/tests/corpus/swift/variables/var-binding.output | Generated output for corpus case: var binding. |
| unified/extractor/tests/corpus/swift/variables/var-without-initialiser.swift | New corpus case source: var without initializer. |
| unified/extractor/tests/corpus/swift/variables/var-without-initialiser.output | Generated output for corpus case: var without initializer. |
| unified/extractor/tests/corpus/swift/variables.txt (removed) | Removes legacy multi-case corpus file (inputs interleaved with generated output). |
| unified/extractor/tests/corpus/swift/types/class-inheritance.swift | New corpus case source: class inheritance. |
| unified/extractor/tests/corpus/swift/types/class-inheritance.output | Generated output for corpus case: class inheritance. |
| unified/extractor/tests/corpus/swift/types/class-with-initializer.swift | New corpus case source: class with initializer. |
| unified/extractor/tests/corpus/swift/types/class-with-initializer.output | Generated output for corpus case: class with initializer. |
| unified/extractor/tests/corpus/swift/types/class-with-method.swift | New corpus case source: class with method. |
| unified/extractor/tests/corpus/swift/types/class-with-method.output | Generated output for corpus case: class with method. |
| unified/extractor/tests/corpus/swift/types/class-with-stored-properties.swift | New corpus case source: class with stored properties. |
| unified/extractor/tests/corpus/swift/types/class-with-stored-properties.output | Generated output for corpus case: class with stored properties. |
| unified/extractor/tests/corpus/swift/types/computed-property.swift | New corpus case source: computed property. |
| unified/extractor/tests/corpus/swift/types/computed-property.output | Generated output for corpus case: computed property. |
| unified/extractor/tests/corpus/swift/types/empty-class.swift | New corpus case source: empty class. |
| unified/extractor/tests/corpus/swift/types/empty-class.output | Generated output for corpus case: empty class. |
| unified/extractor/tests/corpus/swift/types/enum-with-associated-values.swift | New corpus case source: enum with associated values. |
| unified/extractor/tests/corpus/swift/types/enum-with-associated-values.output | Generated output for corpus case: enum with associated values. |
| unified/extractor/tests/corpus/swift/types/enum-with-cases.swift | New corpus case source: enum with cases. |
| unified/extractor/tests/corpus/swift/types/enum-with-cases.output | Generated output for corpus case: enum with cases. |
| unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.swift | New corpus case source: comma-separated enum cases (chained declaration). |
| unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.output | Generated output for corpus case: comma-separated enum cases (chained declaration). |
| unified/extractor/tests/corpus/swift/types/extension.swift | New corpus case source: extension declaration. |
| unified/extractor/tests/corpus/swift/types/extension.output | Generated output for corpus case: extension declaration. |
| unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.swift | New corpus case source: computed property with explicit get/set. |
| unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.output | Generated output for corpus case: computed property with explicit get/set. |
| unified/extractor/tests/corpus/swift/types/protocol-declaration.swift | New corpus case source: protocol declaration. |
| unified/extractor/tests/corpus/swift/types/protocol-declaration.output | Generated output for corpus case: protocol declaration. |
| unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.swift | New corpus case source: protocol property requirements (get vs get/set). |
| unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.output | Generated output for corpus case: protocol property requirements (get vs get/set). |
| unified/extractor/tests/corpus/swift/types/struct.swift | New corpus case source: struct declaration. |
| unified/extractor/tests/corpus/swift/types/struct.output | Generated output for corpus case: struct declaration. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.swift | New corpus case source: do/catch. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.output | Generated output for corpus case: do/catch. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.swift | New corpus case source: force unwrap. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.output | Generated output for corpus case: force unwrap. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.swift | New corpus case source: nil coalescing. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.output | Generated output for corpus case: nil coalescing. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.swift | New corpus case source: optional chaining. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.output | Generated output for corpus case: optional chaining. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.swift | New corpus case source: optional type annotation. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.output | Generated output for corpus case: optional type annotation. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.swift | New corpus case source: throwing function. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.output | Generated output for corpus case: throwing function. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.swift | New corpus case source: try! expression. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.output | Generated output for corpus case: try! expression. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.swift | New corpus case source: try? expression. |
| unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.output | Generated output for corpus case: try? expression. |
| unified/extractor/tests/corpus/swift/optionals-and-errors.txt (removed) | Removes legacy multi-case corpus file (inputs interleaved with generated output). |
| unified/extractor/tests/corpus/swift/operators/addition.swift | New corpus case source: addition operator. |
| unified/extractor/tests/corpus/swift/operators/addition.output | Generated output for corpus case: addition operator. |
| unified/extractor/tests/corpus/swift/operators/comparison.swift | New corpus case source: comparison operator. |
| unified/extractor/tests/corpus/swift/operators/comparison.output | Generated output for corpus case: comparison operator. |
| unified/extractor/tests/corpus/swift/operators/division.swift | New corpus case source: division operator. |
| unified/extractor/tests/corpus/swift/operators/division.output | Generated output for corpus case: division operator. |
| unified/extractor/tests/corpus/swift/operators/equality.swift | New corpus case source: equality operator. |
| unified/extractor/tests/corpus/swift/operators/equality.output | Generated output for corpus case: equality operator. |
| unified/extractor/tests/corpus/swift/operators/logical-and.swift | New corpus case source: logical AND. |
| unified/extractor/tests/corpus/swift/operators/logical-and.output | Generated output for corpus case: logical AND. |
| unified/extractor/tests/corpus/swift/operators/logical-not.swift | New corpus case source: logical NOT. |
| unified/extractor/tests/corpus/swift/operators/logical-not.output | Generated output for corpus case: logical NOT. |
| unified/extractor/tests/corpus/swift/operators/logical-or.swift | New corpus case source: logical OR. |
| unified/extractor/tests/corpus/swift/operators/logical-or.output | Generated output for corpus case: logical OR. |
| unified/extractor/tests/corpus/swift/operators/multiplication.swift | New corpus case source: multiplication operator. |
| unified/extractor/tests/corpus/swift/operators/multiplication.output | Generated output for corpus case: multiplication operator. |
| unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.swift | New corpus case source: precedence (addition vs multiplication). |
| unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.output | Generated output for corpus case: precedence (addition vs multiplication). |
| unified/extractor/tests/corpus/swift/operators/parenthesised-expression.swift | New corpus case source: parenthesised expression. |
| unified/extractor/tests/corpus/swift/operators/parenthesised-expression.output | Generated output for corpus case: parenthesised expression. |
| unified/extractor/tests/corpus/swift/operators/range-operator.swift | New corpus case source: range operator. |
| unified/extractor/tests/corpus/swift/operators/range-operator.output | Generated output for corpus case: range operator. |
| unified/extractor/tests/corpus/swift/operators/subtraction.swift | New corpus case source: subtraction operator. |
| unified/extractor/tests/corpus/swift/operators/subtraction.output | Generated output for corpus case: subtraction operator. |
| unified/extractor/tests/corpus/swift/operators.txt (removed) | Removes legacy multi-case corpus file (inputs interleaved with generated output). |
| unified/extractor/tests/corpus/swift/loops/break-and-continue.swift | New corpus case source: break and continue. |
| unified/extractor/tests/corpus/swift/loops/break-and-continue.output | Generated output for corpus case: break and continue. |
| unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.swift | New corpus case source: for-in over array literal. |
| unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.output | Generated output for corpus case: for-in over array literal. |
| unified/extractor/tests/corpus/swift/loops/for-in-over-range.swift | New corpus case source: for-in over range. |
| unified/extractor/tests/corpus/swift/loops/for-in-over-range.output | Generated output for corpus case: for-in over range. |
| unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.swift | New corpus case source: for-in with where clause. |
| unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.output | Generated output for corpus case: for-in with where clause. |
| unified/extractor/tests/corpus/swift/loops/repeat-while-loop.swift | New corpus case source: repeat-while loop. |
| unified/extractor/tests/corpus/swift/loops/repeat-while-loop.output | Generated output for corpus case: repeat-while loop. |
| unified/extractor/tests/corpus/swift/loops/while-loop.swift | New corpus case source: while loop. |
| unified/extractor/tests/corpus/swift/loops/while-loop.output | Generated output for corpus case: while loop. |
| unified/extractor/tests/corpus/swift/loops.txt (removed) | Removes legacy multi-case corpus file (inputs interleaved with generated output). |
| unified/extractor/tests/corpus/swift/literals/boolean-literals.swift | New corpus case source: boolean literals. |
| unified/extractor/tests/corpus/swift/literals/boolean-literals.output | Generated output for corpus case: boolean literals. |
| unified/extractor/tests/corpus/swift/literals/floating-point-literal.swift | New corpus case source: floating point literal. |
| unified/extractor/tests/corpus/swift/literals/floating-point-literal.output | Generated output for corpus case: floating point literal. |
| unified/extractor/tests/corpus/swift/literals/integer-literal.swift | New corpus case source: integer literal. |
| unified/extractor/tests/corpus/swift/literals/integer-literal.output | Generated output for corpus case: integer literal. |
| unified/extractor/tests/corpus/swift/literals/negative-integer-literal.swift | New corpus case source: negative integer literal. |
| unified/extractor/tests/corpus/swift/literals/negative-integer-literal.output | Generated output for corpus case: negative integer literal. |
| unified/extractor/tests/corpus/swift/literals/nil-literal.swift | New corpus case source: nil literal. |
| unified/extractor/tests/corpus/swift/literals/nil-literal.output | Generated output for corpus case: nil literal. |
| unified/extractor/tests/corpus/swift/literals/string-literal.swift | New corpus case source: string literal. |
| unified/extractor/tests/corpus/swift/literals/string-literal.output | Generated output for corpus case: string literal. |
| unified/extractor/tests/corpus/swift/literals/string-with-interpolation.swift | New corpus case source: string interpolation. |
| unified/extractor/tests/corpus/swift/literals/string-with-interpolation.output | Generated output for corpus case: string interpolation. |
| unified/extractor/tests/corpus/swift/literals.txt (removed) | Removes legacy multi-case corpus file (inputs interleaved with generated output). |
| unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.swift | New corpus case source: call with labelled arguments. |
| unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.output | Generated output for corpus case: call with labelled arguments. |
| unified/extractor/tests/corpus/swift/functions/function-call.swift | New corpus case source: function call. |
| unified/extractor/tests/corpus/swift/functions/function-call.output | Generated output for corpus case: function call. |
| unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.swift | New corpus case source: default parameter value. |
| unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.output | Generated output for corpus case: default parameter value. |
| unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.swift | New corpus case source: named parameters. |
| unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.output | Generated output for corpus case: named parameters. |
| unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.swift | New corpus case source: no parameters. |
| unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.output | Generated output for corpus case: no parameters. |
| unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.swift | New corpus case source: parameters and return type. |
| unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.output | Generated output for corpus case: parameters and return type. |
| unified/extractor/tests/corpus/swift/functions/generic-function.swift | New corpus case source: generic function. |
| unified/extractor/tests/corpus/swift/functions/generic-function.output | Generated output for corpus case: generic function. |
| unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.swift | New corpus case source: leading-dot call expression. |
| unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output | Generated output for corpus case: leading-dot call expression. |
| unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.swift | New corpus case source: leading-dot value expression. |
| unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output | Generated output for corpus case: leading-dot value expression. |
| unified/extractor/tests/corpus/swift/functions/method-call.swift | New corpus case source: method call. |
| unified/extractor/tests/corpus/swift/functions/method-call.output | Generated output for corpus case: method call. |
| unified/extractor/tests/corpus/swift/functions/variadic-function.swift | New corpus case source: variadic function. |
| unified/extractor/tests/corpus/swift/functions/variadic-function.output | Generated output for corpus case: variadic function. |
| unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.swift | New corpus case source: additive expression desugaring. |
| unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.output | Generated output for corpus case: additive expression desugaring. |
| unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.swift | New corpus case source: additive expression desugaring (variant). |
| unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.output | Generated output for corpus case: additive expression desugaring (variant). |
| unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.swift | New corpus case source: deeply-nested import path. |
| unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output | Generated output for corpus case: deeply-nested import path. |
| unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.swift | New corpus case source: dotted import path (two parts). |
| unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output | Generated output for corpus case: dotted import path (two parts). |
| unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.swift | New corpus case source: scoped import using name pattern. |
| unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.output | Generated output for corpus case: scoped import using name pattern. |
| unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.swift | New corpus case source: simple import. |
| unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output | Generated output for corpus case: simple import. |
| unified/extractor/tests/corpus/swift/desugar.txt (removed) | Removes legacy multi-case corpus file (inputs interleaved with generated output). |
| unified/extractor/tests/corpus/swift/control-flow/guard-let.swift | New corpus case source: guard-let. |
| unified/extractor/tests/corpus/swift/control-flow/guard-let.output | Generated output for corpus case: guard-let. |
| unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.swift | New corpus case source: if-case-let with shadowing. |
| unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.output | Generated output for corpus case: if-case-let with shadowing. |
| unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.swift | New corpus case source: if / else-if / else chain. |
| unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.output | Generated output for corpus case: if / else-if / else chain. |
| unified/extractor/tests/corpus/swift/control-flow/if-else.swift | New corpus case source: if/else. |
| unified/extractor/tests/corpus/swift/control-flow/if-else.output | Generated output for corpus case: if/else. |
| unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.swift | New corpus case source: if-let optional binding. |
| unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.output | Generated output for corpus case: if-let optional binding. |
| unified/extractor/tests/corpus/swift/control-flow/if-statement.swift | New corpus case source: if statement. |
| unified/extractor/tests/corpus/swift/control-flow/if-statement.output | Generated output for corpus case: if statement. |
| unified/extractor/tests/corpus/swift/control-flow/switch-statement.swift | New corpus case source: switch statement. |
| unified/extractor/tests/corpus/swift/control-flow/switch-statement.output | Generated output for corpus case: switch statement. |
| unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.swift | New corpus case source: switch with binding pattern. |
| unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.output | Generated output for corpus case: switch with binding pattern. |
| unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.swift | New corpus case source: switch with labeled case-pattern arguments. |
| unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.output | Generated output for corpus case: switch with labeled case-pattern arguments. |
| unified/extractor/tests/corpus/swift/control-flow/ternary-expression.swift | New corpus case source: ternary expression. |
| unified/extractor/tests/corpus/swift/control-flow/ternary-expression.output | Generated output for corpus case: ternary expression. |
| unified/extractor/tests/corpus/swift/collections/array-literal.swift | New corpus case source: array literal. |
| unified/extractor/tests/corpus/swift/collections/array-literal.output | Generated output for corpus case: array literal. |
| unified/extractor/tests/corpus/swift/collections/dictionary-literal.swift | New corpus case source: dictionary literal. |
| unified/extractor/tests/corpus/swift/collections/dictionary-literal.output | Generated output for corpus case: dictionary literal. |
| unified/extractor/tests/corpus/swift/collections/dictionary-subscript.swift | New corpus case source: dictionary subscript (known parser limitation). |
| unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output | Generated output for corpus case: dictionary subscript (known parser limitation). |
| unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.swift | New corpus case source: empty array literal with type. |
| unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.output | Generated output for corpus case: empty array literal with type. |
| unified/extractor/tests/corpus/swift/collections/set-literal.swift | New corpus case source: set literal. |
| unified/extractor/tests/corpus/swift/collections/set-literal.output | Generated output for corpus case: set literal. |
| unified/extractor/tests/corpus/swift/collections/subscript-access.swift | New corpus case source: subscript access (known parser limitation). |
| unified/extractor/tests/corpus/swift/collections/subscript-access.output | Generated output for corpus case: subscript access (known parser limitation). |
| unified/extractor/tests/corpus/swift/collections/tuple-literal.swift | New corpus case source: tuple literal. |
| unified/extractor/tests/corpus/swift/collections/tuple-literal.output | Generated output for corpus case: tuple literal. |
| unified/extractor/tests/corpus/swift/collections/tuple-member-access.swift | New corpus case source: tuple member access. |
| unified/extractor/tests/corpus/swift/collections/tuple-member-access.output | Generated output for corpus case: tuple member access. |
| unified/extractor/tests/corpus/swift/collections.txt (removed) | Removes legacy multi-case corpus file (inputs interleaved with generated output). |
| unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.swift | New corpus case source: closure capture list. |
| unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.output | Generated output for corpus case: closure capture list. |
| unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.swift | New corpus case source: closure with explicit parameters. |
| unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.output | Generated output for corpus case: closure with explicit parameters. |
| unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.swift | New corpus case source: closure with shorthand parameters. |
| unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.output | Generated output for corpus case: closure with shorthand parameters. |
| unified/extractor/tests/corpus/swift/closures/multi-statement-closure.swift | New corpus case source: multi-statement closure. |
| unified/extractor/tests/corpus/swift/closures/multi-statement-closure.output | Generated output for corpus case: multi-statement closure. |
| unified/extractor/tests/corpus/swift/closures/trailing-closure.swift | New corpus case source: trailing closure. |
| unified/extractor/tests/corpus/swift/closures/trailing-closure.output | Generated output for corpus case: trailing closure. |
| unified/extractor/tests/corpus/swift/closures.txt (removed) | Removes legacy multi-case corpus file (inputs interleaved with generated output). |
Review details
- Files reviewed: 205/205 changed files
- Comments generated: 2
- Review effort level: Low
| - To run tests for the parser and mapping, run `cargo test` in the `extractor` directory. | ||
|
|
||
| - Do not edit the printed ASTs in `extractor/test/corpus` directly. To regenerate the ASTs, run `scripts/update-corpus.sh`. | ||
| - Extractor test cases are located at `extractor/test/corpus/swift/*/*.swift`. |
| @@ -0,0 +1 @@ | |||
| var x: Int | |||
tausbn
approved these changes
Jun 29, 2026
tausbn
left a comment
Contributor
There was a problem hiding this comment.
Very nice! Looks good to me. 👍
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
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.
The corpus tests interleaved hand-written content (test cases) with generated content (printed ASTs).
This made merge conflicts hard to resolve because you couldn't just regenerate the printed ASTs without potentially throwing away new test cases that came from either branch (or depending on whether the merge conflict markers appeared, the corpus test could be ruined completely).
The old design did have one nice advantage: Reviewers could see the printed ASTs alongside the source code from which it was generated. To preserve this feature, the source code for the test case is itself included in the generated output file.
A byproduct of this is that we don't have multiple tests per file anymore, and corpus tests don't have an explicit "name" section anymore since the filename is unique per test case now.