Skip to content

Commit bab50ab

Browse files
[GR-27300] Backport a fix in TopScopeObject.
PullRequest: js/1747
2 parents 118ee3b + 0232fbc commit bab50ab

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

graal-js/src/com.oracle.truffle.js.test/src/com/oracle/truffle/js/test/polyglot/JavaScriptLanguageTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
package com.oracle.truffle.js.test.polyglot;
4242

4343
import static org.junit.Assert.assertEquals;
44+
import static org.junit.Assert.assertFalse;
4445
import static org.junit.Assert.assertTrue;
4546

4647
import java.util.Collections;
@@ -160,4 +161,18 @@ public String toString() {
160161
return "string";
161162
}
162163
}
164+
165+
@Test
166+
public void testRemoveBindings() {
167+
try (Context context = JSTest.newContextBuilder().build()) {
168+
Value bindings = context.getBindings("js");
169+
assertTrue(bindings.removeMember("eval"));
170+
171+
assertFalse(bindings.hasMember("foo"));
172+
context.eval(JavaScriptLanguage.ID, "foo=42;");
173+
assertTrue(bindings.hasMember("foo"));
174+
assertTrue(bindings.removeMember("foo"));
175+
assertFalse(bindings.hasMember("foo"));
176+
}
177+
}
163178
}

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/interop/TopScopeObject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ boolean isMemberRemovable(String member,
266266
void removeMember(String member,
267267
@Shared("interop") @CachedLibrary(limit = "LIMIT") InteropLibrary interop) throws UnsupportedMessageException, UnknownIdentifierException {
268268
int length = NAMES.length;
269-
for (int i = 0; i < length; i++) {
269+
for (int i = scopeIndex; i < length; i++) {
270270
Object scope = this.objects[i];
271271
if (interop.isMemberRemovable(scope, member)) {
272272
interop.removeMember(scope, member);

0 commit comments

Comments
 (0)