# mod.ts
// declaration merging
interface Test {
  prop1: Prop1;
}
interface Test {
  prop2: Prop2;
}

interface Prop1 {}
interface Prop2 {}

export { Test };

export * from "./a.ts";

# a.ts
interface A1 {
  prop1: string;
}
interface A1 {
  prop2: Prop2;
}

interface Prop2 {}

export { A1 };

# output
file:///a.ts: EsModuleInfo {
    module_id: ModuleId(
        1,
    ),
    specifier: "file:///a.ts",
    re_exports: [],
    swc_id_to_symbol_id: {
        (
            "A1",
            #2,
        ): 1,
        (
            "Prop2",
            #2,
        ): 4,
    },
    symbols: {
        0: Symbol {
            module_id: ModuleId(
                1,
            ),
            symbol_id: 0,
            parent_id: None,
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "interface A1 {\n  prop1: string;\n}\ninterface A1 {\n  prop2: Prop2;\n}\n\ninterface Prop2 {}\n\nexport { A1 };",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            0,
                        ),
                        end: SourcePos(
                            102,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {
                1,
                4,
            },
            exports: {
                "A1": 5,
            },
            members: {},
        },
        1: Symbol {
            module_id: ModuleId(
                1,
            ),
            symbol_id: 1,
            parent_id: Some(
                0,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "interface A1 {\n  prop1: string;\n}",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            0,
                        ),
                        end: SourcePos(
                            33,
                        ),
                    },
                    flags: 0,
                },
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "interface A1 {\n  prop2: Prop2;\n}",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            34,
                        ),
                        end: SourcePos(
                            66,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {
                2,
                3,
            },
        },
        2: Symbol {
            module_id: ModuleId(
                1,
            ),
            symbol_id: 2,
            parent_id: Some(
                1,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "prop1: string;",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            17,
                        ),
                        end: SourcePos(
                            31,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
        3: Symbol {
            module_id: ModuleId(
                1,
            ),
            symbol_id: 3,
            parent_id: Some(
                1,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "prop2: Prop2;",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            51,
                        ),
                        end: SourcePos(
                            64,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
        4: Symbol {
            module_id: ModuleId(
                1,
            ),
            symbol_id: 4,
            parent_id: Some(
                0,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "interface Prop2 {}",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            68,
                        ),
                        end: SourcePos(
                            86,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
        5: Symbol {
            module_id: ModuleId(
                1,
            ),
            symbol_id: 5,
            parent_id: Some(
                0,
            ),
            decls: [
                SymbolDecl {
                    kind: Target(
                        (
                            "A1",
                            #2,
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            97,
                        ),
                        end: SourcePos(
                            99,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
    },
}
== symbol deps (types and exprs) ==
3:51..64 [Id(("Prop2", #2))]

== symbol deps (types only) ==
3:51..64 [Id(("Prop2", #2))]

file:///mod.ts: EsModuleInfo {
    module_id: ModuleId(
        0,
    ),
    specifier: "file:///mod.ts",
    re_exports: [
        "./a.ts",
    ],
    swc_id_to_symbol_id: {
        (
            "Test",
            #2,
        ): 1,
        (
            "Prop1",
            #2,
        ): 4,
        (
            "Prop2",
            #2,
        ): 5,
    },
    symbols: {
        0: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 0,
            parent_id: None,
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "interface Test {\n  prop1: Prop1;\n}\ninterface Test {\n  prop2: Prop2;\n}\n\ninterface Prop1 {}\ninterface Prop2 {}\n\nexport { Test };\n\nexport * from \"./a.ts\";",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            23,
                        ),
                        end: SourcePos(
                            174,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {
                1,
                4,
                5,
            },
            exports: {
                "Test": 6,
            },
            members: {},
        },
        1: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 1,
            parent_id: Some(
                0,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "interface Test {\n  prop1: Prop1;\n}",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            23,
                        ),
                        end: SourcePos(
                            57,
                        ),
                    },
                    flags: 0,
                },
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "interface Test {\n  prop2: Prop2;\n}",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            58,
                        ),
                        end: SourcePos(
                            92,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {
                2,
                3,
            },
        },
        2: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 2,
            parent_id: Some(
                1,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "prop1: Prop1;",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            42,
                        ),
                        end: SourcePos(
                            55,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
        3: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 3,
            parent_id: Some(
                1,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "prop2: Prop2;",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            77,
                        ),
                        end: SourcePos(
                            90,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
        4: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 4,
            parent_id: Some(
                0,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "interface Prop1 {}",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            94,
                        ),
                        end: SourcePos(
                            112,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
        5: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 5,
            parent_id: Some(
                0,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "interface Prop2 {}",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            113,
                        ),
                        end: SourcePos(
                            131,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
        6: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 6,
            parent_id: Some(
                0,
            ),
            decls: [
                SymbolDecl {
                    kind: Target(
                        (
                            "Test",
                            #2,
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            142,
                        ),
                        end: SourcePos(
                            146,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
    },
}
== symbol deps (types and exprs) ==
2:42..55 [Id(("Prop1", #2))]
3:77..90 [Id(("Prop2", #2))]

== symbol deps (types only) ==
2:42..55 [Id(("Prop1", #2))]
3:77..90 [Id(("Prop2", #2))]

== export definitions ==
[Test]: file:///mod.ts:23..57
  interface Test {
    prop1: Prop1;
  }
file:///mod.ts:58..92
  interface Test {
    prop2: Prop2;
  }
[A1]: file:///a.ts:0..33
  interface A1 {
    prop1: string;
  }
file:///a.ts:34..66
  interface A1 {
    prop2: Prop2;
  }
