denoland / deno_ast

Source text parsing, lexing, and AST related functionality for Deno
https://crates.io/crates/deno_ast
MIT License
148 stars 45 forks source link

deno_graph tests fail with swc 0.99.9 #46

Closed dsherret closed 2 years ago

dsherret commented 2 years ago
---- ast::tests::test_analyze_dependencies_import_assertions stdout ----
thread 'ast::tests::test_analyze_dependencies_import_assertions' panicked at 'assertion failed: `(left == right)`
  left: `None`,
 right: `Some("json")`', src\ast.rs:395:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- tests::test_create_graph_import_assertions stdout ----
thread 'tests::test_create_graph_import_assertions' panicked at 'assertion failed: `(left == right)`

Diff < left / right > :
 Object({
     "roots": Array([
         String(
             "file:///a/test01.ts",
         ),
     ]),
     "modules": Array([
         Object({
             "size": Number(
                 9,
             ),
             "mediaType": String(
                 "Json",
             ),
             "specifier": String(
                 "file:///a/a.json",
             ),
         }),
         Object({
             "size": Number(
                 7,
             ),
             "mediaType": String(
                 "Json",
             ),
             "specifier": String(
                 "file:///a/b.json",
             ),
         }),
         Object({
             "size": Number(
                 9,
             ),
             "mediaType": String(
                 "Json",
             ),
             "specifier": String(
                 "file:///a/c.json",
             ),
         }),
         Object({
             "size": Number(
                 7,
             ),
             "mediaType": String(
                 "Json",
             ),
             "specifier": String(
                 "file:///a/d.json",
             ),
         }),
         Object({
             "dependencies": Array([
                 Object({
                     "specifier": String(
                         "./a.json",
                     ),
                     "code": Object({
                         "specifier": String(
                             "file:///a/a.json",
                         ),
                         "span": Object({
                             "start": Object({
                                 "line": Number(
                                     1,
                                 ),
                                 "character": Number(
                                     26,
                                 ),
                             }),
                             "end": Object({
                                 "line": Number(
                                     1,
                                 ),
                                 "character": Number(
                                     36,
                                 ),
                             }),
                         }),
                     }),
                     "assertionType": String(
                         "json",
                     ),
                 }),
                 Object({
                     "specifier": String(
                         "./b.json",
                     ),
                     "code": Object({
                         "specifier": String(
                             "file:///a/b.json",
                         ),
                         "span": Object({
                             "start": Object({
                                 "line": Number(
                                     2,
                                 ),
                                 "character": Number(
                                     35,
                                 ),
                             }),
                             "end": Object({
                                 "line": Number(
                                     2,
                                 ),
                                 "character": Number(
                                     45,
                                 ),
                             }),
                         }),
                     }),
                     "isDynamic": Bool(
                         true,
                     ),
>                    "assertionType": String(
>                        "json",
>                    ),
                 }),
                 Object({
                     "specifier": String(
                         "./c.json",
                     ),
                     "code": Object({
                         "specifier": String(
                             "file:///a/c.json",
                         ),
                         "span": Object({
                             "start": Object({
                                 "line": Number(
                                     3,
                                 ),
                                 "character": Number(
                                     31,
                                 ),
                             }),
                             "end": Object({
                                 "line": Number(
                                     3,
                                 ),
                                 "character": Number(
                                     41,
                                 ),
                             }),
                         }),
                     }),
                     "assertionType": String(
                         "json",
                     ),
                 }),
                 Object({
                     "specifier": String(
                         "./d.json",
                     ),
                     "code": Object({
                         "specifier": String(
                             "file:///a/d.json",
                         ),
                         "span": Object({
                             "start": Object({
                                 "line": Number(
                                     5,
                                 ),
                                 "character": Number(
                                     35,
                                 ),
                             }),
                             "end": Object({
                                 "line": Number(
                                     5,
                                 ),
                                 "character": Number(
                                     45,
                                 ),
                             }),
                         }),
                     }),
                     "isDynamic": Bool(
                         true,
                     ),
                 }),
             ]),
             "mediaType": String(
                 "TypeScript",
             ),
             "size": Number(
                 329,
             ),
             "specifier": String(
                 "file:///a/test01.ts",
             ),
         }),
     ]),
     "redirects": Object({}),
 })

', src\lib.rs:1491:5

---- tests::test_parse_module_import_assertions stdout ----
thread 'tests::test_parse_module_import_assertions' panicked at 'assertion failed: `(left == right)`

Diff < left / right > :
 Object({
     "dependencies": Array([
         Object({
             "specifier": String(
                 "./a.json",
             ),
             "code": Object({
                 "specifier": String(
                     "file:///a/a.json",
                 ),
                 "span": Object({
                     "start": Object({
                         "line": Number(
                             1,
                         ),
                         "character": Number(
                             18,
                         ),
                     }),
                     "end": Object({
                         "line": Number(
                             1,
                         ),
                         "character": Number(
                             28,
                         ),
                     }),
                 }),
             }),
             "assertionType": String(
                 "json",
             ),
         }),
         Object({
             "specifier": String(
                 "./b.json",
             ),
             "code": Object({
                 "specifier": String(
                     "file:///a/b.json",
                 ),
                 "span": Object({
                     "start": Object({
                         "line": Number(
                             2,
                         ),
                         "character": Number(
                             17,
                         ),
                     }),
                     "end": Object({
                         "line": Number(
                             2,
                         ),
                         "character": Number(
                             27,
                         ),
                     }),
                 }),
             }),
             "isDynamic": Bool(
                 true,
             ),
>            "assertionType": String(
>                "json",
>            ),
         }),
     ]),
     "mediaType": String(
         "TypeScript",
     ),
     "size": Number(
         119,
     ),
     "specifier": String(
         "file:///a/test01.ts",
     ),
 })

', src\lib.rs:1896:5

failures:
    ast::tests::test_analyze_dependencies_import_assertions
    tests::test_create_graph_import_assertions
    tests::test_parse_module_import_assertions
dsherret commented 2 years ago

This is actually due to a breaking change in swc in https://github.com/swc-project/swc/pull/3095

We should resolve this to make it less error prone by implementing something along the lines of https://github.com/swc-project/swc/issues/3137

cc @nayeemrmn

dsherret commented 2 years ago

Opened and waiting on https://github.com/swc-project/swc/pull/3183 to be merged and published