Skip to content

Unified: Split up corpus tests and their generated outputs#22086

Open
asgerf wants to merge 2 commits into
github:mainfrom
asgerf:asgerf-unified-corpus-test-split
Open

Unified: Split up corpus tests and their generated outputs#22086
asgerf wants to merge 2 commits into
github:mainfrom
asgerf:asgerf-unified-corpus-test-split

Conversation

@asgerf

@asgerf asgerf commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

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.

asgerf added 2 commits June 29, 2026 15:01
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.
@asgerf asgerf requested a review from a team as a code owner June 29, 2026 13:08
Copilot AI review requested due to automatic review settings June 29, 2026 13:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 *.txt corpus files with one *.swift input file plus one corresponding *.output generated file per test case.
  • Updates the Rust test harness (corpus_tests.rs) to discover *.swift/*.output pairs, 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

Comment thread unified/AGENTS.md
- 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 tausbn left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice! Looks good to me. 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants