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