fix(javascript): retain distinct module provenance path components
This commit is contained in:
parent
e995b19f83
commit
2bd7de6f8c
|
|
@ -0,0 +1,16 @@
|
|||
import { expect, it } from "vitest";
|
||||
|
||||
import { analyzeJavaScriptSemantics } from "./javascriptSemanticAnalysis.js";
|
||||
import { topLevelBinding } from "./javascriptSemanticAnalysis.fixture.js";
|
||||
|
||||
it("retains distinct module origins when a property contains the old separator", () => {
|
||||
const result = analyzeJavaScriptSemantics(
|
||||
'import * as ns from "./fixture.js"; const selected = choice ? ns["a\\0b"] : ns.a.b;',
|
||||
);
|
||||
const provenance = topLevelBinding(result, "selected").provenance;
|
||||
expect(provenance.status).toBe("ambiguous");
|
||||
expect(provenance.origins.map(({ importedPath }) => importedPath)).toEqual(
|
||||
expect.arrayContaining([["a\0b"], ["a", "b"]]),
|
||||
);
|
||||
expect(provenance.origins).toHaveLength(2);
|
||||
});
|
||||
|
|
@ -48,7 +48,7 @@ export const uniqueSemanticOrigins = (
|
|||
);
|
||||
|
||||
const semanticOriginKey = (origin: JavaScriptModuleOrigin): string =>
|
||||
`${origin.specifier}\0${origin.importedPath.join("\0")}`;
|
||||
JSON.stringify([origin.specifier, origin.importedPath]);
|
||||
|
||||
/** Canonically distinguish primitive values across type boundaries. */
|
||||
export const semanticPrimitiveKey = (
|
||||
|
|
|
|||
Loading…
Reference in New Issue