fix(javascript): keep exact empty env keys and method names

`process.env['']` now projects an exact empty environment key with
complete resolution instead of the same null/partial result as a dynamic
`process.env[key]`. `{ ['']() {} }` keeps its exact empty method name in
the IR instead of a generated `[computed@N]` name.

Semantic graph labels stay nonempty: a shared `semanticNameLabel` helper
displays the empty key as `""` for property slots, config sources, and
function nodes, while `properties.key` keeps the exact value.

Refs #783

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Iwakurakaoru0822andClaude Opus 5.5 committed 2026-10-06 20:35:02 -07:00
1 parent ef535b81fe
commit f7954a8fd6
8 files changed
+83 -7

No files matched your search

@@ -7,6 +7,7 @@ import {
addSemanticGraphNode,
addSemanticGraphRelation,
constructSemanticGraphNode,
semanticNameLabel,
} from "./JavaScriptSemanticGraphConstruction.js";
import type { SemanticFlowProjectionContext } from "./JavaScriptSemanticGraphFlowProjection.js";
@@ -116,7 +117,7 @@ export const semanticPropertySlot = (
kind: "property-slot",
roleKey: `property:${objectBindingId}:${name}`,
location: null,
label: name === "" ? '""' : name,
label: semanticNameLabel(name),
functionNodeId:
context.bindingNodes.get(objectBindingId)?.function_node_id ?? null,
properties: {