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:
Iwakurakaoru0822
2026-10-06 20:35:02 -07:00
parent ef535b81fe
commit f7954a8fd6
8 changed files with 83 additions and 7 deletions
@@ -10,6 +10,7 @@ import {
addSemanticGraphRelation,
addSemanticGraphUnknown,
constructSemanticGraphNode,
semanticNameLabel,
} from "./JavaScriptSemanticGraphConstruction.js";
import { unknownSemanticEvidence } from "./JavaScriptSemanticGraphEvidence.js";
import {
@@ -78,7 +79,10 @@ const addConfigurationNode = (
kind: "config-source",
roleKey: operation.configId,
location: operation.location,
label: operation.key ?? operation.kind,
label:
operation.key === null
? operation.kind
: semanticNameLabel(operation.key),
functionNodeId:
operation.ownerCallableId === null
? null