Repository navigation
Conversation
getKnownBinding moves to module level and is now the only place that reads shadowDepth === 0. createStaticEvalVars, hasKnownBindingValue, and the inline require checks call it instead of repeating the rule, so a change to it reaches all of them. No behavior change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tycrimm
requested review from
a team,
icyJoseph,
ijjk and
styfle
as code owners
November 5, 2026 23:20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to @styfle's review on #613: the shadow rule lived in both
getKnownBindingandcreateStaticEvalVars, so a change to one wouldn't reach the other.getKnownBinding(knownBindings, name)moves to module level and is now the only place that readsshadowDepth === 0:createStaticEvalVarscalls it instead of repeating the rule.hasKnownBindingValuebecomesgetKnownBinding(...) !== undefined. Known binding values are always objects, so this matches the oldbinding && binding.shadowDepth === 0.knownBindings.require.shadowDepth === 0checks callhasKnownBindingValue('require'). The unguarded one in require-wrapper detection only runs under!isESM || job.mixedModules, the same condition that definesrequire, so it reads the same.The remaining
shadowDepthuses are the initial values and the scope enter/exit counters.No behavior change, so
refactor:and no release.Tests. No new tests.
test/static-eval-vars.test.jsalready checks the rule against the old eager copy, and breaking the helper fails it. Fulljest --coveragelocally shows the same 8 environment-only failures asmain(native builds and fixtures), with function coverage unchanged at 96.51%.🤖 Generated with Claude Code