summaryrefslogtreecommitdiff
path: root/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js')
-rw-r--r--deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js
new file mode 100644
index 0000000000..0a05af1acd
--- /dev/null
+++ b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js
@@ -0,0 +1,71 @@
+// Copyright 2018 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+Debug = debug.Debug;
+
+// StaCurrentContextSlot
+success(10, `(function(){
+ const x = 10;
+ function f1() {return x;}
+ return x;
+})()`);
+
+// StaNamedProperty
+var a = {name: 'foo'};
+function set_name(a) {
+ a.name = 'bar';
+ return a.name;
+}
+
+fail(`set_name(a)`);
+success('bar', `set_name({name: 'foo'})`);
+
+// StaNamedOwnProperty
+var name_value = 'value';
+function create_object_literal() {
+ var obj = {name: name_value};
+ return obj.name;
+};
+
+success('value', `create_object_literal()`);
+
+// StaKeyedProperty
+var arrayValue = 1;
+function create_array_literal() {
+ return [arrayValue];
+}
+var b = { 1: 2 };
+
+success([arrayValue], `create_array_literal()`)
+fail(`b[1] ^= 2`);
+
+// StaInArrayLiteral
+function return_array_use_spread(a) {
+ return [...a];
+}
+
+fail(`return_array_use_spread([1])`);
+
+// CallAccessorSetter
+var array = [1,2,3];
+fail(`array.length = 2`);
+// TODO(7515): this one should be side effect free
+fail(`[1,2,3].length = 2`);
+
+// StaDataPropertyInLiteral
+function return_literal_with_data_property(a) {
+ return {[a] : 1};
+}
+
+success({foo: 1}, `return_literal_with_data_property('foo')`);
+
+function success(expectation, source) {
+ const result = Debug.evaluateGlobal(source, true).value();
+ if (expectation !== undefined) assertEquals(expectation, result);
+}
+
+function fail(source) {
+ assertThrows(() => Debug.evaluateGlobal(source, true),
+ EvalError);
+}