Skip to main content

meta_language/
parity_fixtures.rs

1use crate::parity::{
2    ParityCapability, ParityFixture, ParityTransformExpectation, ParityVerificationExpectation,
3};
4
5mod wave_two;
6
7pub const PARITY_FIXTURES: &[ParityFixture] = &[
8    // Upstream: tree-sitter/tree-sitter test/fixtures/test_grammars/readme_grammar/corpus.txt; license: MIT.
9    ParityFixture {
10        target_name: "tree-sitter",
11        name: "readme grammar expression cst",
12        language: "JavaScript",
13        source: "a + b * c\n",
14        expected_reconstruction: "a + b * c\n",
15        provenance: "tree-sitter/tree-sitter test/fixtures/test_grammars/readme_grammar/corpus.txt; license: MIT",
16        verification_expectation: ParityVerificationExpectation::Clean,
17        transform_expectation: None,
18        capabilities: &[ParityCapability::LosslessParsing],
19    },
20    // Upstream: tree-sitter/tree-sitter test/fixtures/test_grammars/extra_non_terminals/corpus.txt; license: MIT.
21    ParityFixture {
22        target_name: "tree-sitter",
23        name: "extras and comment trivia",
24        language: "JavaScript",
25        source: "const a = 1; /* one */\n// e\nconst b = 2;\n",
26        expected_reconstruction: "const a = 1; /* one */\n// e\nconst b = 2;\n",
27        provenance: "tree-sitter/tree-sitter test/fixtures/test_grammars/extra_non_terminals/corpus.txt; license: MIT",
28        verification_expectation: ParityVerificationExpectation::Clean,
29        transform_expectation: None,
30        capabilities: &[
31            ParityCapability::LosslessParsing,
32            ParityCapability::TriviaPreservation,
33        ],
34    },
35    // Upstream: tree-sitter/tree-sitter test/fixtures/error_corpus/javascript_errors.txt; license: MIT.
36    ParityFixture {
37        target_name: "tree-sitter",
38        name: "javascript error corpus extra identifiers",
39        language: "JavaScript",
40        source: "if (a b) {\n  c d;\n}\ne f;\n",
41        expected_reconstruction: "if (a b) {\n  c d;\n}\ne f;\n",
42        provenance: "tree-sitter/tree-sitter test/fixtures/error_corpus/javascript_errors.txt; license: MIT",
43        verification_expectation: ParityVerificationExpectation::Recoverable,
44        transform_expectation: None,
45        capabilities: &[
46            ParityCapability::LosslessParsing,
47            ParityCapability::ErrorRecovery,
48        ],
49    },
50    // Upstream: tree-sitter/tree-sitter docs/src/using-parsers/queries/1-syntax.md; license: MIT.
51    ParityFixture {
52        target_name: "tree-sitter",
53        name: "class identifier query source",
54        language: "JavaScript",
55        source: "class Person {\n  getName() { return name; }\n}\n",
56        expected_reconstruction: "class Person {\n  getName() { return name; }\n}\n",
57        provenance: "tree-sitter/tree-sitter docs/src/using-parsers/queries/1-syntax.md; license: MIT",
58        verification_expectation: ParityVerificationExpectation::Clean,
59        transform_expectation: None,
60        capabilities: &[ParityCapability::QueryMatching],
61    },
62    // Upstream: tree-sitter/tree-sitter docs/src/3-syntax-highlighting.md; license: MIT.
63    ParityFixture {
64        target_name: "tree-sitter",
65        name: "markdown fenced rust with queryable tokens",
66        language: "Markdown",
67        source: "Intro\n```rust\nfn main() {}\n```\n",
68        expected_reconstruction: "Intro\n```rust\nfn main() {}\n```\n",
69        provenance: "tree-sitter/tree-sitter docs/src/3-syntax-highlighting.md; license: MIT",
70        verification_expectation: ParityVerificationExpectation::Clean,
71        transform_expectation: None,
72        capabilities: &[
73            ParityCapability::LosslessParsing,
74            ParityCapability::ErrorRecovery,
75            ParityCapability::MixedLanguageRegions,
76            ParityCapability::QueryMatching,
77        ],
78    },
79    // Upstream: Instagram/LibCST native/libcst/tests/fixtures/comments.py; license: MIT.
80    ParityFixture {
81        target_name: "LibCST",
82        name: "python round trip with indentation and comments",
83        language: "Python",
84        source: "x = 1\n\n# Some comment before a function.\ndef function(default=None):\n    return default\n",
85        expected_reconstruction: "x = 1\n\n# Some comment before a function.\ndef function(default=None):\n    return default\n",
86        provenance: "Instagram/LibCST native/libcst/tests/fixtures/comments.py; license: MIT",
87        verification_expectation: ParityVerificationExpectation::Clean,
88        transform_expectation: None,
89        capabilities: &[
90            ParityCapability::LosslessParsing,
91            ParityCapability::TriviaPreservation,
92            ParityCapability::SameLanguageReconstruction,
93        ],
94    },
95    // Upstream: Instagram/LibCST libcst/_nodes/tests/test_empty_line.py; license: MIT.
96    ParityFixture {
97        target_name: "LibCST",
98        name: "empty line comment trivia",
99        language: "Python",
100        source: "# comment\n\nvalue = 1\n",
101        expected_reconstruction: "# comment\n\nvalue = 1\n",
102        provenance: "Instagram/LibCST libcst/_nodes/tests/test_empty_line.py; license: MIT",
103        verification_expectation: ParityVerificationExpectation::Clean,
104        transform_expectation: None,
105        capabilities: &[
106            ParityCapability::LosslessParsing,
107            ParityCapability::TriviaPreservation,
108        ],
109    },
110    // Upstream: Instagram/LibCST libcst/_parser/tests/test_parse_errors.py; license: MIT.
111    ParityFixture {
112        target_name: "LibCST",
113        name: "mismatched brace parse error",
114        language: "Python",
115        source: "abcd)",
116        expected_reconstruction: "abcd)",
117        provenance: "Instagram/LibCST libcst/_parser/tests/test_parse_errors.py; license: MIT",
118        verification_expectation: ParityVerificationExpectation::Recoverable,
119        transform_expectation: None,
120        capabilities: &[
121            ParityCapability::LosslessParsing,
122            ParityCapability::ErrorRecovery,
123        ],
124    },
125    // Upstream: Instagram/LibCST libcst/_nodes/tests/test_removal_behavior.py; license: MIT.
126    ParityFixture {
127        target_name: "LibCST",
128        name: "python captured identifier transform",
129        language: "Python",
130        source: "old_name = call(old_name)\n",
131        expected_reconstruction: "old_name = call(old_name)\n",
132        provenance: "Instagram/LibCST libcst/_nodes/tests/test_removal_behavior.py; license: MIT",
133        verification_expectation: ParityVerificationExpectation::Clean,
134        transform_expectation: Some(ParityTransformExpectation {
135            query: r#"
136            (identifier) @target
137            (#eq? @target "old_name")
138            "#,
139            capture_name: "target",
140            replacement: "renamed",
141            expected_output: "renamed = call(renamed)\n",
142        }),
143        capabilities: &[
144            ParityCapability::QueryMatching,
145            ParityCapability::TransformBySubstitution,
146            ParityCapability::SameLanguageReconstruction,
147        ],
148    },
149    // Upstream: benjamn/recast test/identity.ts via test/data/regexp-props.js; license: MIT.
150    ParityFixture {
151        target_name: "Recast",
152        name: "javascript comment preservation",
153        language: "JavaScript",
154        source: "const value = 1; // keep trivia\n",
155        expected_reconstruction: "const value = 1; // keep trivia\n",
156        provenance: "benjamn/recast test/identity.ts and test/data/regexp-props.js; license: MIT",
157        verification_expectation: ParityVerificationExpectation::Clean,
158        transform_expectation: None,
159        capabilities: &[
160            ParityCapability::LosslessParsing,
161            ParityCapability::TriviaPreservation,
162            ParityCapability::SameLanguageReconstruction,
163        ],
164    },
165    // Upstream: benjamn/recast test/data/regexp-props.js; license: MIT.
166    ParityFixture {
167        target_name: "Recast",
168        name: "regexp properties identity fixture",
169        language: "JavaScript",
170        source: "_.templateSettings = {\n    evaluate    : /<%([\\s\\S]+?)%>/g,\n    interpolate : /<%=([\\s\\S]+?)%>/g,\n    escape      : /<%-([\\s\\S]+?)%>/g // this line parsed oddly\n};\n",
171        expected_reconstruction: "_.templateSettings = {\n    evaluate    : /<%([\\s\\S]+?)%>/g,\n    interpolate : /<%=([\\s\\S]+?)%>/g,\n    escape      : /<%-([\\s\\S]+?)%>/g // this line parsed oddly\n};\n",
172        provenance: "benjamn/recast test/data/regexp-props.js; license: MIT",
173        verification_expectation: ParityVerificationExpectation::Clean,
174        transform_expectation: None,
175        capabilities: &[
176            ParityCapability::LosslessParsing,
177            ParityCapability::TriviaPreservation,
178            ParityCapability::SameLanguageReconstruction,
179        ],
180    },
181    // Upstream: benjamn/recast test/data/empty.js; license: MIT.
182    ParityFixture {
183        target_name: "Recast",
184        name: "empty program identity fixture",
185        language: "JavaScript",
186        source: "",
187        expected_reconstruction: "",
188        provenance: "benjamn/recast test/data/empty.js; license: MIT",
189        verification_expectation: ParityVerificationExpectation::Clean,
190        transform_expectation: None,
191        capabilities: &[
192            ParityCapability::LosslessParsing,
193            ParityCapability::SameLanguageReconstruction,
194        ],
195    },
196    // Upstream: facebook/jscodeshift README.md __testfixtures__ example; license: MIT.
197    ParityFixture {
198        target_name: "jscodeshift",
199        name: "javascript transform input",
200        language: "JavaScript",
201        source: "const oldName = call(oldName);\n",
202        expected_reconstruction: "const oldName = call(oldName);\n",
203        provenance: "facebook/jscodeshift README.md __testfixtures__ example; license: MIT",
204        verification_expectation: ParityVerificationExpectation::Clean,
205        transform_expectation: Some(ParityTransformExpectation {
206            query: r#"
207            (identifier) @target
208            (#eq? @target "oldName")
209            "#,
210            capture_name: "target",
211            replacement: "newName",
212            expected_output: "const newName = call(newName);\n",
213        }),
214        capabilities: &[
215            ParityCapability::QueryMatching,
216            ParityCapability::TransformBySubstitution,
217            ParityCapability::SameLanguageReconstruction,
218        ],
219    },
220    // Upstream: facebook/jscodeshift sample/__testfixtures__/reverse-identifiers.input.js; license: MIT.
221    ParityFixture {
222        target_name: "jscodeshift",
223        name: "reverse identifiers input fixture",
224        language: "JavaScript",
225        source: "var firstWord = 'Hello ';\nvar secondWord = 'world';\nvar message = firstWord + secondWord;\n",
226        expected_reconstruction: "var firstWord = 'Hello ';\nvar secondWord = 'world';\nvar message = firstWord + secondWord;\n",
227        provenance: "facebook/jscodeshift sample/__testfixtures__/reverse-identifiers.input.js; license: MIT",
228        verification_expectation: ParityVerificationExpectation::Clean,
229        transform_expectation: Some(ParityTransformExpectation {
230            query: r#"
231            (identifier) @target
232            (#eq? @target "firstWord")
233            "#,
234            capture_name: "target",
235            replacement: "droWtsrif",
236            expected_output: "var droWtsrif = 'Hello ';\nvar secondWord = 'world';\nvar message = droWtsrif + secondWord;\n",
237        }),
238        capabilities: &[
239            ParityCapability::QueryMatching,
240            ParityCapability::TransformBySubstitution,
241            ParityCapability::SameLanguageReconstruction,
242        ],
243    },
244    // Upstream: facebook/jscodeshift sample/__testfixtures__/reverse-identifiers.output.js; license: MIT.
245    ParityFixture {
246        target_name: "jscodeshift",
247        name: "reverse identifiers output fixture",
248        language: "JavaScript",
249        source: "var droWtsrif = 'Hello ';\nvar droWdnoces = 'world';\nvar egassem = droWtsrif + droWdnoces;\n",
250        expected_reconstruction: "var droWtsrif = 'Hello ';\nvar droWdnoces = 'world';\nvar egassem = droWtsrif + droWdnoces;\n",
251        provenance: "facebook/jscodeshift sample/__testfixtures__/reverse-identifiers.output.js; license: MIT",
252        verification_expectation: ParityVerificationExpectation::Clean,
253        transform_expectation: None,
254        capabilities: &[ParityCapability::SameLanguageReconstruction],
255    },
256    // Upstream: rust-analyzer/rowan examples/s_expressions.rs; license: Apache-2.0 OR MIT.
257    ParityFixture {
258        target_name: "Rowan",
259        name: "s-expression tutorial input",
260        language: "txt",
261        source: "(+ (* 15 2) 62)\n",
262        expected_reconstruction: "(+ (* 15 2) 62)\n",
263        provenance: "rust-analyzer/rowan examples/s_expressions.rs; license: Apache-2.0 OR MIT",
264        verification_expectation: ParityVerificationExpectation::Clean,
265        transform_expectation: None,
266        capabilities: &[ParityCapability::LosslessParsing],
267    },
268    // Upstream: rust-analyzer/rowan examples/math.rs; license: Apache-2.0 OR MIT.
269    ParityFixture {
270        target_name: "Rowan",
271        name: "math checkpoint expression",
272        language: "txt",
273        source: "1 + 2 * 3 + 4\n",
274        expected_reconstruction: "1 + 2 * 3 + 4\n",
275        provenance: "rust-analyzer/rowan examples/math.rs; license: Apache-2.0 OR MIT",
276        verification_expectation: ParityVerificationExpectation::Clean,
277        transform_expectation: None,
278        capabilities: &[ParityCapability::LosslessParsing],
279    },
280    // Upstream: rust-analyzer/rowan examples/s_expressions.rs; license: Apache-2.0 OR MIT.
281    ParityFixture {
282        target_name: "Rowan",
283        name: "rust trivia preservation",
284        language: "Rust",
285        source: "fn main() {\n    // keep\n}\n",
286        expected_reconstruction: "fn main() {\n    // keep\n}\n",
287        provenance: "rust-analyzer/rowan examples/s_expressions.rs; license: Apache-2.0 OR MIT",
288        verification_expectation: ParityVerificationExpectation::Clean,
289        transform_expectation: None,
290        capabilities: &[
291            ParityCapability::LosslessParsing,
292            ParityCapability::TriviaPreservation,
293            ParityCapability::SameLanguageReconstruction,
294            ParityCapability::SnapshotVersioning,
295        ],
296    },
297    // Upstream: domenicquirl/cstree cstree/src/getting_started.rs; license: Apache-2.0 OR MIT.
298    ParityFixture {
299        target_name: "cstree",
300        name: "calculator nested expression",
301        language: "txt",
302        source: "1 - (2 + 5)\n",
303        expected_reconstruction: "1 - (2 + 5)\n",
304        provenance: "domenicquirl/cstree cstree/src/getting_started.rs; license: Apache-2.0 OR MIT",
305        verification_expectation: ParityVerificationExpectation::Clean,
306        transform_expectation: None,
307        capabilities: &[ParityCapability::LosslessParsing],
308    },
309    // Upstream: domenicquirl/cstree test_suite/tests/derive.rs; license: Apache-2.0 OR MIT.
310    ParityFixture {
311        target_name: "cstree",
312        name: "derive syntax kind fixture",
313        language: "Rust",
314        source: "#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n#[repr(u32)]\nenum SyntaxKind { Int, Plus, Root }\n",
315        expected_reconstruction: "#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n#[repr(u32)]\nenum SyntaxKind { Int, Plus, Root }\n",
316        provenance: "domenicquirl/cstree test_suite/tests/derive.rs; license: Apache-2.0 OR MIT",
317        verification_expectation: ParityVerificationExpectation::Clean,
318        transform_expectation: None,
319        capabilities: &[
320            ParityCapability::LosslessParsing,
321            ParityCapability::SameLanguageReconstruction,
322        ],
323    },
324    // Upstream: domenicquirl/cstree cstree/src/getting_started.rs; license: Apache-2.0 OR MIT.
325    ParityFixture {
326        target_name: "cstree",
327        name: "rust checkpoint source",
328        language: "Rust",
329        source: "let checkpoint = value + 1;\n",
330        expected_reconstruction: "let checkpoint = value + 1;\n",
331        provenance: "domenicquirl/cstree cstree/src/getting_started.rs; license: Apache-2.0 OR MIT",
332        verification_expectation: ParityVerificationExpectation::Clean,
333        transform_expectation: None,
334        capabilities: &[
335            ParityCapability::LosslessParsing,
336            ParityCapability::TriviaPreservation,
337            ParityCapability::SameLanguageReconstruction,
338            ParityCapability::SnapshotVersioning,
339        ],
340    },
341    // Upstream: dotnet/roslyn src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNodeTests.cs; license: MIT.
342    ParityFixture {
343        target_name: "Roslyn",
344        name: "csharp diagnostic recovery source",
345        language: "C#",
346        source: "class C { void M() { Console.WriteLine(1); } }\n",
347        expected_reconstruction: "class C { void M() { Console.WriteLine(1); } }\n",
348        provenance: "dotnet/roslyn src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNodeTests.cs; license: MIT",
349        verification_expectation: ParityVerificationExpectation::Clean,
350        transform_expectation: None,
351        capabilities: &[
352            ParityCapability::LosslessParsing,
353            ParityCapability::TriviaPreservation,
354            ParityCapability::ErrorRecovery,
355            ParityCapability::SameLanguageReconstruction,
356        ],
357    },
358    // Upstream: dotnet/roslyn src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNodeTests.cs TestGetNextTokenIncludingSkippedTokens; license: MIT.
359    ParityFixture {
360        target_name: "Roslyn",
361        name: "skipped token recovery round trip",
362        language: "C#",
363        source: "garbage\nusing goo.bar;\n",
364        expected_reconstruction: "garbage\nusing goo.bar;\n",
365        provenance: "dotnet/roslyn src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNodeTests.cs; license: MIT",
366        verification_expectation: ParityVerificationExpectation::Recoverable,
367        transform_expectation: None,
368        capabilities: &[
369            ParityCapability::LosslessParsing,
370            ParityCapability::ErrorRecovery,
371        ],
372    },
373    // Upstream: dotnet/roslyn src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxRewriterTests.cs TestReplaceTriviaShouldNotLoseParseOptions; license: MIT.
374    ParityFixture {
375        target_name: "Roslyn",
376        name: "leading trivia preservation",
377        language: "C#",
378        source: "/* c */ class C { }\n",
379        expected_reconstruction: "/* c */ class C { }\n",
380        provenance: "dotnet/roslyn src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxRewriterTests.cs; license: MIT",
381        verification_expectation: ParityVerificationExpectation::Clean,
382        transform_expectation: None,
383        capabilities: &[
384            ParityCapability::LosslessParsing,
385            ParityCapability::TriviaPreservation,
386        ],
387    },
388    // Upstream: dotnet/roslyn src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNodeTests.cs TestReplaceSingleTokenWithMultipleTokens; license: MIT.
389    ParityFixture {
390        target_name: "Roslyn",
391        name: "class identifier transform",
392        language: "C#",
393        source: "private class C { }\n",
394        expected_reconstruction: "private class C { }\n",
395        provenance: "dotnet/roslyn src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNodeTests.cs; license: MIT",
396        verification_expectation: ParityVerificationExpectation::Clean,
397        transform_expectation: Some(ParityTransformExpectation {
398            query: r#"
399            (identifier) @target
400            (#eq? @target "C")
401            "#,
402            capture_name: "target",
403            replacement: "D",
404            expected_output: "private class D { }\n",
405        }),
406        capabilities: &[
407            ParityCapability::QueryMatching,
408            ParityCapability::TransformBySubstitution,
409            ParityCapability::SameLanguageReconstruction,
410        ],
411    },
412    // Upstream: dotnet/roslyn src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNodeTests.cs missing-token diagnostics; license: MIT.
413    ParityFixture {
414        target_name: "Roslyn",
415        name: "missing token diagnostic recovery",
416        language: "C#",
417        source: "class C { void M() { if ( }",
418        expected_reconstruction: "class C { void M() { if ( }",
419        provenance: "dotnet/roslyn src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNodeTests.cs; license: MIT",
420        verification_expectation: ParityVerificationExpectation::Recoverable,
421        transform_expectation: None,
422        capabilities: &[
423            ParityCapability::LosslessParsing,
424            ParityCapability::ErrorRecovery,
425        ],
426    },
427    // Upstream: link-foundation/links-notation TEST_CASE_COMPARISON.md verifies cross-language counts as Python 137, JavaScript 138, Rust 138, C# 140; license: Unlicense.
428    ParityFixture {
429        target_name: "links-notation",
430        name: "doublet link fixture",
431        language: "LiNo",
432        source: "(papa mama)\n",
433        expected_reconstruction: "(papa mama)\n",
434        provenance: "link-foundation/links-notation csharp/Link.Foundation.Links.Notation.Tests/SingleLineParserTests.cs and TEST_CASE_COMPARISON.md 137/138/138/140 tests; license: Unlicense",
435        verification_expectation: ParityVerificationExpectation::Clean,
436        transform_expectation: None,
437        capabilities: &[ParityCapability::LosslessParsing],
438    },
439    // Upstream: link-foundation/links-notation csharp/Link.Foundation.Links.Notation.Tests/SingleLineParserTests.cs; license: Unlicense.
440    ParityFixture {
441        target_name: "links-notation",
442        name: "triplet single link fixture",
443        language: "LiNo",
444        source: "(papa loves mama)\n",
445        expected_reconstruction: "(papa loves mama)\n",
446        provenance: "link-foundation/links-notation csharp/Link.Foundation.Links.Notation.Tests/SingleLineParserTests.cs; license: Unlicense",
447        verification_expectation: ParityVerificationExpectation::Clean,
448        transform_expectation: None,
449        capabilities: &[ParityCapability::LosslessParsing],
450    },
451    // Upstream: link-foundation/links-notation csharp/Link.Foundation.Links.Notation.Tests/TupleTests.cs; license: Unlicense.
452    ParityFixture {
453        target_name: "links-notation",
454        name: "n-tuple tuple fixture",
455        language: "LiNo",
456        source: "(papa (lovesMama: loves mama))\n(son lovesMama)\n(daughter lovesMama)\n(all (love mama))\n",
457        expected_reconstruction: "(papa (lovesMama: loves mama))\n(son lovesMama)\n(daughter lovesMama)\n(all (love mama))\n",
458        provenance: "link-foundation/links-notation csharp/Link.Foundation.Links.Notation.Tests/TupleTests.cs; license: Unlicense",
459        verification_expectation: ParityVerificationExpectation::Clean,
460        transform_expectation: None,
461        capabilities: &[
462            ParityCapability::LosslessParsing,
463            ParityCapability::SelfDescription,
464        ],
465    },
466    // Upstream: link-foundation/links-notation csharp/Link.Foundation.Links.Notation.Tests/IndentedIdSyntaxTests.cs; license: Unlicense.
467    ParityFixture {
468        target_name: "links-notation",
469        name: "indented id fixture",
470        language: "LiNo",
471        source: "greeting:\n  hello\n",
472        expected_reconstruction: "greeting:\n  hello\n",
473        provenance: "link-foundation/links-notation csharp/Link.Foundation.Links.Notation.Tests/IndentedIdSyntaxTests.cs; license: Unlicense",
474        verification_expectation: ParityVerificationExpectation::Clean,
475        transform_expectation: None,
476        capabilities: &[ParityCapability::LosslessParsing],
477    },
478    // Upstream: link-foundation/links-notation csharp/Link.Foundation.Links.Notation.Tests/NestedSelfReferenceTests.cs; license: Unlicense.
479    ParityFixture {
480        target_name: "links-notation",
481        name: "self reference object fixture",
482        language: "LiNo",
483        source: "(obj_0: list (int 1) (int 2) (obj_1: list (int 3) (int 4) obj_0))\n",
484        expected_reconstruction: "(obj_0: list (int 1) (int 2) (obj_1: list (int 3) (int 4) obj_0))\n",
485        provenance: "link-foundation/links-notation csharp/Link.Foundation.Links.Notation.Tests/NestedSelfReferenceTests.cs; license: Unlicense",
486        verification_expectation: ParityVerificationExpectation::Clean,
487        transform_expectation: None,
488        capabilities: &[
489            ParityCapability::LosslessParsing,
490            ParityCapability::ObjectRoundTrip,
491        ],
492    },
493    // Upstream: link-foundation/links-notation README documents parse_lino_to_links/format_links as the round-trip API the 0.22 crate exposes; license: Unlicense.
494    ParityFixture {
495        target_name: "links-notation",
496        name: "whole network serialization fixture",
497        language: "LiNo",
498        source: "(papa loves mama)\n",
499        expected_reconstruction: "(papa loves mama)\n",
500        provenance: "link-foundation/links-notation README parse_lino_to_links/format_links round-trip API; license: Unlicense",
501        verification_expectation: ParityVerificationExpectation::Clean,
502        transform_expectation: None,
503        capabilities: &[
504            ParityCapability::LosslessParsing,
505            ParityCapability::LinoSerialization,
506        ],
507    },
508    // Upstream: link-foundation/link-cli uses the Foundation.Data.Doublets.Cli.Tests project name in C#; license: Unlicense.
509    ParityFixture {
510        target_name: "link-cli",
511        name: "create substitution fixture",
512        language: "LiNo",
513        source: "(() ((1 1)))\n",
514        expected_reconstruction: "(() ((1 1)))\n",
515        provenance: "link-foundation/link-cli csharp/Foundation.Data.Doublets.Cli.Tests/BasicQueryProcessor.cs Foundation.Data.Doublets.Cli.Tests; license: Unlicense",
516        verification_expectation: ParityVerificationExpectation::Clean,
517        transform_expectation: None,
518        capabilities: &[ParityCapability::TransformBySubstitution],
519    },
520    // Upstream: link-foundation/link-cli csharp/Foundation.Data.Doublets.Cli.Tests/BasicQueryProcessor.cs; license: Unlicense.
521    ParityFixture {
522        target_name: "link-cli",
523        name: "update substitution fixture",
524        language: "LiNo",
525        source: "(((1: 1 1)) ((1: 1 2)))\n",
526        expected_reconstruction: "(((1: 1 1)) ((1: 1 2)))\n",
527        provenance: "link-foundation/link-cli csharp/Foundation.Data.Doublets.Cli.Tests/BasicQueryProcessor.cs Foundation.Data.Doublets.Cli.Tests; license: Unlicense",
528        verification_expectation: ParityVerificationExpectation::Clean,
529        transform_expectation: None,
530        capabilities: &[ParityCapability::TransformBySubstitution],
531    },
532    // Upstream: link-foundation/link-cli csharp/Foundation.Data.Doublets.Cli.Tests/BasicQueryProcessor.cs; license: Unlicense.
533    ParityFixture {
534        target_name: "link-cli",
535        name: "delete substitution fixture",
536        language: "LiNo",
537        source: "(((1 1)) ())\n",
538        expected_reconstruction: "(((1 1)) ())\n",
539        provenance: "link-foundation/link-cli csharp/Foundation.Data.Doublets.Cli.Tests/BasicQueryProcessor.cs Foundation.Data.Doublets.Cli.Tests; license: Unlicense",
540        verification_expectation: ParityVerificationExpectation::Clean,
541        transform_expectation: None,
542        capabilities: &[ParityCapability::TransformBySubstitution],
543    },
544    // Upstream: link-foundation/link-cli csharp/Foundation.Data.Doublets.Cli.Tests/AdvancedMixedQueryProcessor.cs; license: Unlicense.
545    ParityFixture {
546        target_name: "link-cli",
547        name: "swap substitution fixture",
548        language: "LiNo",
549        source: "((($index: $source $target)) (($index: $target $source)))\n",
550        expected_reconstruction: "((($index: $source $target)) (($index: $target $source)))\n",
551        provenance: "link-foundation/link-cli csharp/Foundation.Data.Doublets.Cli.Tests/AdvancedMixedQueryProcessor.cs Foundation.Data.Doublets.Cli.Tests; license: Unlicense",
552        verification_expectation: ParityVerificationExpectation::Clean,
553        transform_expectation: None,
554        capabilities: &[ParityCapability::TransformBySubstitution],
555    },
556    // Upstream: link-foundation/lino-objects-codec csharp/tests/Lino.Objects.Codec.Tests/BasicTypesTests.cs; license: Unlicense.
557    ParityFixture {
558        target_name: "lino-objects-codec",
559        name: "roundtrip primitive object fixture",
560        language: "LiNo",
561        source: "(int 42)\n(str aGVsbG8=)\n",
562        expected_reconstruction: "(int 42)\n(str aGVsbG8=)\n",
563        provenance: "link-foundation/lino-objects-codec csharp/tests/Lino.Objects.Codec.Tests/BasicTypesTests.cs; license: Unlicense",
564        verification_expectation: ParityVerificationExpectation::Clean,
565        transform_expectation: None,
566        capabilities: &[ParityCapability::ObjectRoundTrip],
567    },
568    // Upstream: link-foundation/lino-objects-codec csharp/tests/Lino.Objects.Codec.Tests/CircularReferencesTests.cs; license: Unlicense.
569    ParityFixture {
570        target_name: "lino-objects-codec",
571        name: "shared reference object fixture",
572        language: "LiNo",
573        source: "(obj_0: list obj_1 obj_1 obj_1)\n(obj_1: dict ((str c2hhcmVk) (str dmFsdWU=)))\n",
574        expected_reconstruction: "(obj_0: list obj_1 obj_1 obj_1)\n(obj_1: dict ((str c2hhcmVk) (str dmFsdWU=)))\n",
575        provenance: "link-foundation/lino-objects-codec csharp/tests/Lino.Objects.Codec.Tests/CircularReferencesTests.cs; license: Unlicense",
576        verification_expectation: ParityVerificationExpectation::Clean,
577        transform_expectation: None,
578        capabilities: &[ParityCapability::ObjectRoundTrip],
579    },
580    // Upstream: link-foundation/lino-objects-codec csharp/tests/Lino.Objects.Codec.Tests/CircularReferencesTests.cs; license: Unlicense.
581    ParityFixture {
582        target_name: "lino-objects-codec",
583        name: "circular reference object fixture",
584        language: "LiNo",
585        source: "(obj_0: list obj_0)\n",
586        expected_reconstruction: "(obj_0: list obj_0)\n",
587        provenance: "link-foundation/lino-objects-codec csharp/tests/Lino.Objects.Codec.Tests/CircularReferencesTests.cs; license: Unlicense",
588        verification_expectation: ParityVerificationExpectation::Clean,
589        transform_expectation: None,
590        capabilities: &[ParityCapability::ObjectRoundTrip],
591    },
592    // Upstream: link-foundation/relative-meta-logic examples/dependent-types.lino; license: Unlicense.
593    ParityFixture {
594        target_name: "relative-meta-logic",
595        name: "dependent type fixture",
596        language: "RML",
597        source: "(Type: Type Type)\n(Natural: Type Natural)\n(? (Type of Type))\n",
598        expected_reconstruction: "(Type: Type Type)\n(Natural: Type Natural)\n(? (Type of Type))\n",
599        provenance: "link-foundation/relative-meta-logic examples/dependent-types.lino; license: Unlicense",
600        verification_expectation: ParityVerificationExpectation::Clean,
601        transform_expectation: None,
602        capabilities: &[
603            ParityCapability::SemanticEvaluation,
604            ParityCapability::SelfDescription,
605        ],
606    },
607    // Upstream: link-foundation/relative-meta-logic examples/belnap-four-valued.lino and examples/ternary-kleene.lino; license: Unlicense.
608    ParityFixture {
609        target_name: "relative-meta-logic",
610        name: "many-valued truth fixture",
611        language: "RML",
612        source: "(and: min)\n(or: max)\n(? (both true and false))\n(? (neither true nor false))\n",
613        expected_reconstruction: "(and: min)\n(or: max)\n(? (both true and false))\n(? (neither true nor false))\n",
614        provenance: "link-foundation/relative-meta-logic examples/belnap-four-valued.lino and examples/ternary-kleene.lino; license: Unlicense",
615        verification_expectation: ParityVerificationExpectation::Clean,
616        transform_expectation: None,
617        capabilities: &[ParityCapability::SemanticEvaluation],
618    },
619    // Upstream: link-foundation/relative-meta-logic examples/liar-paradox.lino; license: Unlicense.
620    ParityFixture {
621        target_name: "relative-meta-logic",
622        name: "probabilistic liar paradox fixture",
623        language: "RML",
624        source: "(s: s is s)\n((s = false) has probability 0.5)\n(? (s = false))\n(? (not (s = false)))\n",
625        expected_reconstruction: "(s: s is s)\n((s = false) has probability 0.5)\n(? (s = false))\n(? (not (s = false)))\n",
626        provenance: "link-foundation/relative-meta-logic examples/liar-paradox.lino; license: Unlicense",
627        verification_expectation: ParityVerificationExpectation::Clean,
628        transform_expectation: None,
629        capabilities: &[ParityCapability::SemanticEvaluation],
630    },
631    // Upstream: link-assistant/formal-ai data/seed/concepts.lino, an actual seed corpus file rather than issue #1's unverified 706 estimate; license: Unlicense.
632    ParityFixture {
633        target_name: "formal-ai",
634        name: "seed concepts corpus fixture",
635        language: "LiNo",
636        source: "concept_links_notation\n  term \"Links Notation\"\n  intent \"concept_lookup\"\n  category \"data-format\"\n  source \"https://github.com/linksplatform/Documentation\"\n  source_kind \"project-docs\"\n",
637        expected_reconstruction: "concept_links_notation\n  term \"Links Notation\"\n  intent \"concept_lookup\"\n  category \"data-format\"\n  source \"https://github.com/linksplatform/Documentation\"\n  source_kind \"project-docs\"\n",
638        provenance: "link-assistant/formal-ai data/seed/concepts.lino; license: Unlicense",
639        verification_expectation: ParityVerificationExpectation::Clean,
640        transform_expectation: None,
641        capabilities: &[
642            ParityCapability::FormalizationRoundTrip,
643            ParityCapability::SemanticEvaluation,
644        ],
645    },
646    // Upstream: link-assistant/formal-ai data/seed/meanings-translation.lino; license: Unlicense.
647    ParityFixture {
648        target_name: "formal-ai",
649        name: "seed translation meanings corpus fixture",
650        language: "LiNo",
651        source: "meanings\n  meaning \"translate\"\n    role \"translation_action\"\n    lexeme \"en\"\n      word \"translate\"\n",
652        expected_reconstruction: "meanings\n  meaning \"translate\"\n    role \"translation_action\"\n    lexeme \"en\"\n      word \"translate\"\n",
653        provenance: "link-assistant/formal-ai data/seed/meanings-translation.lino; license: Unlicense",
654        verification_expectation: ParityVerificationExpectation::Clean,
655        transform_expectation: None,
656        capabilities: &[
657            ParityCapability::FormalizationRoundTrip,
658            ParityCapability::CrossLanguageReconstruction,
659        ],
660    },
661    // Upstream: link-assistant/formal-ai data/benchmarks/industry-suite.lino; license: Unlicense.
662    ParityFixture {
663        target_name: "formal-ai",
664        name: "industry benchmark corpus fixture",
665        language: "LiNo",
666        source: "benchmark_suite_issue_304_industry_permissive_slice\n  record_type \"benchmark_suite\"\n  id \"issue_304_industry_permissive_slice\"\n  title \"Permissive industry benchmark slice\"\n  minimum_pass_count \"10\"\n",
667        expected_reconstruction: "benchmark_suite_issue_304_industry_permissive_slice\n  record_type \"benchmark_suite\"\n  id \"issue_304_industry_permissive_slice\"\n  title \"Permissive industry benchmark slice\"\n  minimum_pass_count \"10\"\n",
668        provenance: "link-assistant/formal-ai data/benchmarks/industry-suite.lino; license: Unlicense",
669        verification_expectation: ParityVerificationExpectation::Clean,
670        transform_expectation: None,
671        capabilities: &[ParityCapability::SemanticEvaluation],
672    },
673    // Upstream: link-assistant/formal-ai data/benchmarks/coding-modification-suite.lino; license: Unlicense.
674    ParityFixture {
675        target_name: "formal-ai",
676        name: "coding modification benchmark corpus fixture",
677        language: "LiNo",
678        source: "coding_modification_case_en_reverse_sort\n  record_type \"coding_modification_case\"\n  id \"en_reverse_sort\"\n  expected_intent \"write_program\"\n  expected_answer_contains \"names.sort_by(|a, b| b.cmp(a))\"\n",
679        expected_reconstruction: "coding_modification_case_en_reverse_sort\n  record_type \"coding_modification_case\"\n  id \"en_reverse_sort\"\n  expected_intent \"write_program\"\n  expected_answer_contains \"names.sort_by(|a, b| b.cmp(a))\"\n",
680        provenance: "link-assistant/formal-ai data/benchmarks/coding-modification-suite.lino; license: Unlicense",
681        verification_expectation: ParityVerificationExpectation::Clean,
682        transform_expectation: None,
683        capabilities: &[
684            ParityCapability::FormalizationRoundTrip,
685            ParityCapability::SemanticEvaluation,
686        ],
687    },
688    // Upstream: link-assistant/meta-expression docs/FORMALIZE.md and the 351-concept js/data/semantic-lexicon.json contract mirrored in src/data/semantic-lexicon.json; license: Unlicense.
689    ParityFixture {
690        target_name: "meta-expression",
691        name: "Hawaii naturalization fixture",
692        language: "English",
693        source: "Hawaii is a state.\n",
694        expected_reconstruction: "Hawaii is a state.\n",
695        provenance: "link-assistant/meta-expression docs/FORMALIZE.md and js/data/semantic-lexicon.json 351 concepts; license: Unlicense",
696        verification_expectation: ParityVerificationExpectation::Clean,
697        transform_expectation: None,
698        capabilities: &[
699            ParityCapability::FormalizationRoundTrip,
700            ParityCapability::TriviaPreservation,
701            ParityCapability::CrossLanguageReconstruction,
702        ],
703    },
704    // Upstream: link-assistant/meta-expression docs/FORMALIZE.md formalization examples; license: Unlicense.
705    ParityFixture {
706        target_name: "meta-expression",
707        name: "1 + 1 formalization fixture",
708        language: "English",
709        source: "1 + 1 = 2\n",
710        expected_reconstruction: "1 + 1 = 2\n",
711        provenance: "link-assistant/meta-expression docs/FORMALIZE.md; license: Unlicense",
712        verification_expectation: ParityVerificationExpectation::Clean,
713        transform_expectation: None,
714        capabilities: &[
715            ParityCapability::FormalizationRoundTrip,
716            ParityCapability::TriviaPreservation,
717        ],
718    },
719    // Upstream: link-assistant/meta-expression docs/FORMAL_AI_COMPATIBILITY.md self-reference and unknowns contract; license: Unlicense.
720    ParityFixture {
721        target_name: "meta-expression",
722        name: "this statement is false fixture",
723        language: "English",
724        source: "this statement is false\n",
725        expected_reconstruction: "this statement is false\n",
726        provenance: "link-assistant/meta-expression docs/FORMAL_AI_COMPATIBILITY.md; license: Unlicense",
727        verification_expectation: ParityVerificationExpectation::Clean,
728        transform_expectation: None,
729        capabilities: &[
730            ParityCapability::FormalizationRoundTrip,
731            ParityCapability::TriviaPreservation,
732        ],
733    },
734    wave_two::AST_GREP_FIXTURE,
735    wave_two::SEMGREP_FIXTURE,
736    wave_two::COMBY_FIXTURE,
737    wave_two::GRITQL_FIXTURE,
738    wave_two::SRCML_FIXTURE,
739    wave_two::DIFFTASTIC_FIXTURE,
740    wave_two::BABEL_FIXTURE,
741    wave_two::SWC_FIXTURE,
742    wave_two::OPENREWRITE_FIXTURE,
743    wave_two::SPOON_FIXTURE,
744    wave_two::JAVAPARSER_FIXTURE,
745    wave_two::RASCAL_FIXTURE,
746    wave_two::STRATEGO_SPOOFAX_FIXTURE,
747    wave_two::TXL_FIXTURE,
748    wave_two::MPS_FIXTURE,
749    wave_two::COCCINELLE_FIXTURE,
750    wave_two::GF_FIXTURE,
751    wave_two::UNIVERSAL_DEPENDENCIES_FIXTURE,
752    wave_two::LANGUAGETOOL_FIXTURE,
753    wave_two::DOUBLETS_RS_FIXTURE,
754];