diff --git a/test/resource/tooling/ohos_test.xml b/test/resource/tooling/ohos_test.xml
index 371e6ccccdfc9164f1337c4c8aa2c78b5bd19978..b4ca9d8c77d334f1b5ca744df070c333bf7dfd51 100755
--- a/test/resource/tooling/ohos_test.xml
+++ b/test/resource/tooling/ohos_test.xml
@@ -26,6 +26,8 @@
+
+
diff --git a/tooling/test/BUILD.gn b/tooling/test/BUILD.gn
index 799c78f7624b1e677c8506e90f1c78212eb9a7d2..cb85ebef60a819843f6e5de5aa2230fc0aa2ae7e 100644
--- a/tooling/test/BUILD.gn
+++ b/tooling/test/BUILD.gn
@@ -44,7 +44,9 @@ test_js_files = [
"throw_exception",
"variable_first",
"variable_second",
- "module_variable",
+ "import_variable_first",
+ "import_variable_second",
+ "module_variable"
]
foreach(file, test_js_files) {
@@ -57,7 +59,7 @@ foreach(file, test_js_files) {
src_js = rebase_path(test_js)
dst_file = rebase_path(test_abc)
extra_args = [ "--debug" ]
- if (file == "module_variable") {
+ if (file == "module_variable" || file == "import_variable_first" || file == "import_variable_second") {
extra_args += [ "--module" ]
extra_args += [ "--merge-abc" ]
}
diff --git a/tooling/test/testcases/js/import_variable_first.js b/tooling/test/testcases/js/import_variable_first.js
new file mode 100644
index 0000000000000000000000000000000000000000..adf1271f76757a415650c18fda27f859d16e1fcf
--- /dev/null
+++ b/tooling/test/testcases/js/import_variable_first.js
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export var number3 = 3;
+export var string3 = "helloworld12";
+export var boolean3 = new Boolean(1);
+
+export var number4 = 4;
+export var string4 = "helloworld123";
+export var boolean4 = new Boolean(1);
diff --git a/tooling/test/testcases/js/import_variable_second.js b/tooling/test/testcases/js/import_variable_second.js
new file mode 100644
index 0000000000000000000000000000000000000000..b1b8605445ac2a8f671ae6d008bd7d7fb01451f7
--- /dev/null
+++ b/tooling/test/testcases/js/import_variable_second.js
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export var number6 = 6;
+export var string6 = "helloworld12345";
+export var boolean6 = new Boolean(1);
+export var obj6 = {
+ "key6": "value3",
+ "key7": 10000
+};
+export function function6() {
+ var test = 1;
+}
+export var map6 = new Map();
+export var set6 = new Set();
+export var undefined6 = undefined;
+export let array6 = ['orange', 'Grape']
+export function* generator6() {
+ let dd = 0;
+ var d1 = 100;
+ yield 10;
+ yield 11;
+ yield 12;
+}
+export var regexp6 = /^\d+\.\d+$/i;
+export var arraybuffer6 = new ArrayBuffer(24);
+export var uint8array6 = new Uint8Array(arraybuffer1);
+export const dataview6 = new DataView(arraybuffer1, 1);
+export var bigint6 = BigInt(99999n);
+export var typedarray6 = new Uint8Array();
+export var sharedarraybuffer6 = new SharedArrayBuffer(32);
+export var iterator6 = string6[Symbol.iterator];
+export var weakref6 = new WeakRef(obj6);
\ No newline at end of file
diff --git a/tooling/test/testcases/js/module_variable.js b/tooling/test/testcases/js/module_variable.js
index 39952581901200aa9a4fbf43b78ecb156f102e4a..122300f32689c33c6a556890bf04b68ebf2f87d7 100644
--- a/tooling/test/testcases/js/module_variable.js
+++ b/tooling/test/testcases/js/module_variable.js
@@ -13,18 +13,218 @@
* limitations under the License.
*/
+import * as obj from 'import_variable_first.js';
+import number6 from "./import_variable_second.js";
+import string6 from './import_variable_second.js';
+import boolean6 from './import_variable_second.js';
+import obj6 from './import_variable_second.js';
+import function6 from './import_variable_second.js';
+import map6 from './import_variable_second.js';
+import set6 from './import_variable_second.js';
+import undefined6 from './import_variable_second.js';
+import array6 from './import_variable_second.js';
+import generator6 from './import_variable_second.js';
+import regexp6 from './import_variable_second.js';
+import arraybuffer6 from './import_variable_second.js';
+import uint8array6 from './import_variable_second.js';
+import dataview6 from './import_variable_second.js';
+import bigint6 from './import_variable_second.js';
+
+import {number6 as number7} from './import_variable_second.js';
+import {string6 as string7} from './import_variable_second.js';
+import {boolean6 as boolean7} from './import_variable_second.js';
+import {obj6 as obj7} from './import_variable_second.js';
+import {function6 as function7} from './import_variable_second.js';
+import {map6 as map7} from './import_variable_second.js';
+import {set6 as set7} from './import_variable_second.js';
+import {undefined6 as undefined7} from './import_variable_second.js';
+import {array6 as array7}from './import_variable_second.js';
+import {generator6 as generator7} from './import_variable_second.js';
+import {regexp5 as regexp7} from './import_variable_second.js';
+import {arraybuffer6 as arraybuffer7} from './import_variable_second.js';
+import {uint8array6 as uint8array7} from './import_variable_second.js';
+import {dataview6 as dataview7} from './import_variable_second.js';
+import {bigint6 as bigint7} from './import_variable_second.js';
+
export var number0 = 1;
-export var count1 = 30;
-export var number5 = 10;
-export var elemnt = 50;
-export var count = 80;
-export var high = 110;
+export var string0 = "helloworld";
+export var boolean0 = new Boolean(0);
+export var obj0 = {
+ "key0": "value0",
+ "key1": 100
+};
+export function function0() {
+ var test = 0;
+}
+export var map0 = new Map();
+export var set0 = new Set();
+export var undefined0 = undefined;
+export let array0 = ['Apple', 'Banana']
+export function* generator0() {
+ let aa = 0;
+ var a1 = 100;
+ yield 1;
+ yield 2;
+ yield 3;
+}
+export var regexp0 = /^\d+\.\d+$/i;
+export var arraybuffer0 = new ArrayBuffer(24);
+export var uint8array0 = new Uint8Array(arraybuffer0);
+export const dataview0 = new DataView(arraybuffer0, 0);
+export var bigint0 = BigInt(999n);
+export var typedarray0 = new Uint8Array();
+export var sharedarraybuffer0 = new SharedArrayBuffer(32);
+export var weakref0 = new WeakRef(obj0);
+export var iterator0 = string0[Symbol.iterator];
+export default function(){};
+
+var number1 = 11;
+var string1 = "helloworld1";
+var boolean1 = new Boolean(0);
+var obj1 = {
+ "key2": "value1",
+ "key3": 1000
+};
+function function1() {
+ var test = 0;
+}
+var map1 = new Map();
+var set1 = new Set();
+var undefined1 = undefined;
+let array1 = ['Cherry', 'Pear']
+function* generator1() {
+ let bb = 0;
+ var b1 = 100;
+ yield 4;
+ yield 5;
+ yield 6;
+}
+var regexp1 = /^\d+\.\d+$/i;
+var arraybuffer1 = new ArrayBuffer(24);
+var uint8array1 = new Uint8Array(arraybuffer0);
+const dataview1 = new DataView(arraybuffer0, 0);
+var bigint1 = BigInt(9999n);
+var typedarray1 = new Uint8Array();
+var sharedarraybuffer1 = new SharedArrayBuffer(32);
+var iterator1 = string1[Symbol.iterator];
+var weakref1 = new WeakRef(obj1);
+
+export {number1};
+export {string1};
+export {boolean1};
+export {obj1};
+export {function1};
+export {map1};
+export {set1};
+export {undefined1};
+export {generator1};
+export {regexp1};
+export {arraybuffer1};
+export {uint8array1};
+export {dataview1};
+export {bigint1};
+export {typedarray1};
+export {sharedarraybuffer1};
+export {iterator1};
+export {weakref1};
+
+var number2 = 111;
+var string2 = "helloworld11";
+var boolean2 = new Boolean(0);
+var obj2 = {
+ "key4": "value2",
+ "key5": 10000
+};
+function function2() {
+ var test = 0;
+}
+var map2 = new Map();
+var set2 = new Set();
+var undefined2 = undefined;
+let array2 = ['Lemon', 'Durian']
+function* generator2() {
+ let cc = 0;
+ var c1 = 1000;
+ yield 7;
+ yield 8;
+ yield 9;
+}
+var regexp2 = /^\d+\.\d+$/i;
+var arraybuffer2 = new ArrayBuffer(24);
+var uint8array2 = new Uint8Array(arraybuffer0);
+const dataview2 = new DataView(arraybuffer0, 0);
+var bigint2 = BigInt(9999n);
+var typedarray2 = new Uint8Array();
+var sharedarraybuffer2 = new SharedArrayBuffer(32);
+var iterator2 = string2[Symbol.iterator];
+var weakref2 = new WeakRef(obj2);
+
+
+export {number2 as number3};
+export {string2 as string3};
+export {boolean2 as boolean3};
+export {obj2 as obj3};
+export {function2 as function3};
+export {map2 as map3};
+export {set2 as set3};
+export {undefined2 as undefined3};
+export {generator2 as generator3};
+export {regexp2 as regexp3};
+export {arraybuffer2 as arraybuffer3};
+export {uint8array2 as uint8array3};
+export {dataview2 as dataview3};
+export {bigint2 as bigint3};
+export {typedarray2 as typedarray3};
+export {sharedarraybuffer2 as sharedarraybuffer3};
+export {iterator2 as iterator3};
+export {weakref2 as weakref3};
+
+export {number3} from './import_variable_first.js';
+export {string3} from './import_variable_first.js';
+export {boolean3} from './import_variable_first.js';
+
+export {number4 as number5} from './import_variable_first.js';
+export {string4 as string5} from './import_variable_first.js';
+export {boolean4 as boolean5} from './import_variable_first.js';
export function foo() {
- var number1 = count;
- var number2 = number5;
- var number3 = elemnt;
- var number4 = 50;
+ var num1 = number0;
+ var num2 = string0;
+ var num3 = boolean0;
+ var num4 = obj0;
+ var num5 = obj;
+ var num6 = number6;
+ var num7 = string6;
+ var num8 = boolean6;
+ var num9 = obj6;
+ var num10 = function6;
+ var num11 = map6;
+ var num12 = set6;
+ var num13 = undefined6;
+ var num14 = array6;
+ var num15 = generator6;
+ var num16 = regexp6;
+ var num17 = arraybuffer6;
+ var num18 = uint8array6;
+ var num19 = dataview6;
+ var num20 = bigint6;
+ var num6 = number7;
+ var num7 = string7;
+ var num8 = boolean7;
+ var num9 = obj7;
+ var num10 = function7;
+ var num11 = map7;
+ var num12 = set7;
+ var num13 = undefined7;
+ var num14 = array7;
+ var num15 = generator7;
+ var num16 = regexp7;
+ var num17 = arraybuffer7;
+ var num18 = uint8array7;
+ var num19 = dataview7;
+ var num20 = bigint7;
+
+ var num21 = bigint0;
}
foo();
\ No newline at end of file
diff --git a/tooling/test/testcases/js_module_variable_test.h b/tooling/test/testcases/js_module_variable_test.h
index 45be22597e46923d901651e826ab49ddfcd2090d..74c96f35259b38d2c48465aba63040e6fc82ee6c 100644
--- a/tooling/test/testcases/js_module_variable_test.h
+++ b/tooling/test/testcases/js_module_variable_test.h
@@ -38,8 +38,8 @@ public:
loadModule = [this](std::string_view moduleName) {
static_cast(channel_)->Initial(vm_, runtime_);
- // 25: breakpointer line
- location_ = TestUtil::GetLocation(gg_sourceFile.c_str(), 25, 0, gg_pandaFile.c_str());
+ // 190: breakpointer line
+ location_ = TestUtil::GetLocation(gg_sourceFile.c_str(), 190, 0, gg_pandaFile.c_str());
ASSERT_TRUE(location_.GetMethodId().IsValid());
TestUtil::SuspendUntilContinue(DebugEvent::LOAD_MODULE);
ASSERT_EQ(moduleName, gg_pandaFile);
@@ -111,7 +111,7 @@ private:
auto frame = paused->GetCallFrames()->at(0).get();
ASSERT_EQ(frame->GetFunctionName(), "foo");
auto scopes = frame->GetScopeChain();
- ASSERT_EQ(scopes->size(), 3U); // 2: contain local and global
+ ASSERT_EQ(scopes->size(), 3U); // 3: contain localăglobal and module
for (uint32_t i = 0; i < scopes->size(); i++) {
auto scope = scopes->at(i).get();
if (scope->GetType() != Scope::Type::Module()) {
@@ -213,17 +213,315 @@ private:
* { "obj0", { "object", "Object", "Object", "[object Object]", "key", "string", "2", "2" } }
*/
const std::map> moduleVariableMap_ = {
+ { "string0", { "string", "helloworld", "helloworld" } },
+ { "boolean0", { "object", "Object", "Boolean{[[PrimitiveValue]]: false}", "false", "[[PrimitiveValue]]",
+ "boolean", "false", "false" } },
{ "number0", { "number", "1", "1" } },
- { "count1", { "number", "30", "30" } },
- { "number5", { "number", "10", "10" } },
- { "elemnt", { "number", "50", "50" } },
- { "count", { "number", "80", "80" } },
- { "high", { "number", "110", "110" } },
+ { "obj0", { "object", "Object", "Object", "[object Object]",
+ "key0", "string", "value0", "value0",
+ "key1", "number", "100", "100" } },
+ { "arraybuffer0", { "object", "arraybuffer", "Arraybuffer", "ArrayBuffer(24)", "[object ArrayBuffer]",
+ "[[Int8Array]]", "object", "Object", "Int8Array(24)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Uint8Array]]", "object",
+ "Object", "Uint8Array(24)", "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "[[Uint8ClampedArray]]", "object", "Object", "Object",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Int16Array]]", "object",
+ "Object", "Int16Array(12)", "0,0,0,0,0,0,0,0,0,0,0,0", "[[Uint16Array]]", "object",
+ "Object", "Object", "0,0,0,0,0,0,0,0,0,0,0,0", "[[Int32Array]]", "object", "Object",
+ "Int32Array(6)", "0,0,0,0,0,0", "[[Uint32Array]]", "object", "Object", "Object",
+ "0,0,0,0,0,0", "[[Float32Array]]", "object", "Object", "Object", "0,0,0,0,0,0",
+ "[[Float64Array]]", "object", "Object", "Object", "0,0,0", "[[BigInt64Array]]",
+ "object", "Object", "Object", "0,0,0", "[[BigUint64Array]]", "object", "Object",
+ "Object", "0,0,0" } },
+ { "function0", { "function", "Function", "function function0( { [js code] }",
+ "Cannot get source code of funtion" } },
+ { "generator0", { "function", "Generator", "function* generator0( { [js code] }",
+ "Cannot get source code of funtion" } },
+ { "map0", { "object", "map", "Map", "Map(0)", "[object Map]", "size", "number", "0", "0", "[[Entries]]",
+ "object", "array", "Array", "Array(0)", "" } },
+ { "set0", { "object", "set", "Set", "Set(0)", "[object Set]", "size", "number", "0", "0", "[[Entries]]",
+ "object", "array", "Array", "Array(0)", "" } },
+ { "undefined0", { "undefined" } },
+ { "array0", { "object", "array", "Array", "Array(2)", "Apple,Banana", "0", "string", "Apple", "Apple",
+ "1", "string", "Banana", "Banana", "length", "number", "2", "2" } },
+ { "regexp0", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i", "global", "boolean",
+ "false", "false", "ignoreCase", "boolean", "true", "true", "multiline", "boolean", "false",
+ "false", "dotAll", "boolean", "false", "false", "hasIndices", "boolean", "false", "false",
+ "unicode", "boolean", "false", "false", "sticky", "boolean", "false", "false", "flags",
+ "string", "i", "i", "source", "string", "^\\d+\\.\\d+$", "^\\d+\\.\\d+$", "lastIndex",
+ "number", "0", "0" } },
+ { "uint8array0", { "object", "Object", "Uint8Array(24)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", " 0", "number", "0", "0",
+ " 1", "number", "0", "0", " 2", "number", "0", "0", " 3",
+ "number", "0", "0", " 4", "number", "0", "0", " 5", "number", "0",
+ "0", " 6", "number", "0", "0", " 7", "number", "0", "0", " 8",
+ "number", "0", "0", " 9", "number", "0", "0", " 10", "number", "0",
+ "0", " 11", "number", "0", "0", " 12", "number", "0", "0", " 13",
+ "number", "0", "0", " 14", "number", "0", "0", " 15", "number", "0",
+ "0", " 16", "number", "0", "0", " 17", "number", "0", "0", " 18",
+ "number", "0", "0", " 19", "number", "0", "0", " 20", "number", "0",
+ "0", " 21", "number", "0", "0", " 22", "number", "0", "0", " 23",
+ "number", "0", "0" } },
+ { "dataview0", { "object", "Object", "Object", "[object DataView]", "none" } },
+ { "bigint0", { "bigint", "999n", "999" } },
+ { "typedarray0", { "object", "Object", "Uint8Array(0)", "", "none" } },
+ { "sharedarraybuffer0", { "object", "Object", "SharedArrayBuffer(32)", "[object SharedArrayBuffer]",
+ "[[Int8Array]]", "object", "Object", "Int8Array(32)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "[[Uint8Array]]", "object", "Object", "Uint8Array(32)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "[[Int16Array]]", "object", "Object", "Int16Array(16)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Int32Array]]", "object", "Object",
+ "Int32Array(8)", "0,0,0,0,0,0,0,0", "[[ArrayBufferByteLength]]", "number", "32",
+ "32", "byteLength", "number", "32", "32" } },
+ { "weakref0", { "object", "Object", "WeakRef {}", "[object WeakRef]", "none" } },
+ { "iterator0", { "function", "Function", "function [Symbol.iterator]( { [native code] }",
+ "function [Symbol.iterator]() { [native code] }" } },
+ { "string1", { "string", "helloworld1", "helloworld1" } },
+ { "boolean1", { "object", "Object", "Boolean{[[PrimitiveValue]]: false}", "false", "[[PrimitiveValue]]",
+ "boolean", "false", "false" } },
+ { "number1", { "number", "11", "11" } },
+ { "obj1", { "object", "Object", "Object", "[object Object]",
+ "key2", "string", "value1", "value1",
+ "key3", "number", "1000", "1000" } },
+ { "arraybuffer1", { "object", "arraybuffer", "Arraybuffer", "ArrayBuffer(24)", "[object ArrayBuffer]",
+ "[[Int8Array]]", "object", "Object", "Int8Array(24)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Uint8Array]]", "object",
+ "Object", "Uint8Array(24)", "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "[[Uint8ClampedArray]]", "object", "Object", "Object",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Int16Array]]", "object",
+ "Object", "Int16Array(12)", "0,0,0,0,0,0,0,0,0,0,0,0", "[[Uint16Array]]", "object",
+ "Object", "Object", "0,0,0,0,0,0,0,0,0,0,0,0", "[[Int32Array]]", "object", "Object",
+ "Int32Array(6)", "0,0,0,0,0,0", "[[Uint32Array]]", "object", "Object", "Object",
+ "0,0,0,0,0,0", "[[Float32Array]]", "object", "Object", "Object", "0,0,0,0,0,0",
+ "[[Float64Array]]", "object", "Object", "Object", "0,0,0", "[[BigInt64Array]]",
+ "object", "Object", "Object", "0,0,0", "[[BigUint64Array]]", "object", "Object",
+ "Object", "0,0,0" } },
+ { "function1", { "function", "Function", "function function1( { [js code] }",
+ "Cannot get source code of funtion" } },
+ { "generator1", { "function", "Generator", "function* generator1( { [js code] }",
+ "Cannot get source code of funtion" } },
+ { "map1", { "object", "map", "Map", "Map(0)", "[object Map]", "size", "number", "0", "0", "[[Entries]]",
+ "object", "array", "Array", "Array(0)", "" } },
+ { "set1", { "object", "set", "Set", "Set(0)", "[object Set]", "size", "number", "0", "0", "[[Entries]]",
+ "object", "array", "Array", "Array(0)", "" } },
+ { "undefined1", { "undefined" } },
+ { "array1", { "object", "array", "Array", "Array(2)", "Cherry, Pear", "0", "string", "Cherry", "Cherry",
+ "1", "string", "Pear", "Pear", "length", "number", "2", "2" } },
+ { "regexp1", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i", "global", "boolean",
+ "false", "false", "ignoreCase", "boolean", "true", "true", "multiline", "boolean", "false",
+ "false", "dotAll", "boolean", "false", "false", "hasIndices", "boolean", "false", "false",
+ "unicode", "boolean", "false", "false", "sticky", "boolean", "false", "false", "flags",
+ "string", "i", "i", "source", "string", "^\\d+\\.\\d+$", "^\\d+\\.\\d+$", "lastIndex",
+ "number", "0", "0" } },
+ { "uint8array1", { "object", "Object", "Uint8Array(24)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", " 0", "number", "0", "0",
+ " 1", "number", "0", "0", " 2", "number", "0", "0", " 3",
+ "number", "0", "0", " 4", "number", "0", "0", " 5", "number", "0",
+ "0", " 6", "number", "0", "0", " 7", "number", "0", "0", " 8",
+ "number", "0", "0", " 9", "number", "0", "0", " 10", "number", "0",
+ "0", " 11", "number", "0", "0", " 12", "number", "0", "0", " 13",
+ "number", "0", "0", " 14", "number", "0", "0", " 15", "number", "0",
+ "0", " 16", "number", "0", "0", " 17", "number", "0", "0", " 18",
+ "number", "0", "0", " 19", "number", "0", "0", " 20", "number", "0",
+ "0", " 21", "number", "0", "0", " 22", "number", "0", "0", " 23",
+ "number", "0", "0" } },
+ { "dataview1", { "object", "Object", "Object", "[object DataView]", "none" } },
+ { "bigint1", { "bigint", "9999n", "9999" } },
+ { "typedarray1", { "object", "Object", "Uint8Array(0)", "", "none" } },
+ { "sharedarraybuffer1", { "object", "Object", "SharedArrayBuffer(32)", "[object SharedArrayBuffer]",
+ "[[Int8Array]]", "object", "Object", "Int8Array(32)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "[[Uint8Array]]", "object", "Object", "Uint8Array(32)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "[[Int16Array]]", "object", "Object", "Int16Array(16)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Int32Array]]", "object", "Object",
+ "Int32Array(8)", "0,0,0,0,0,0,0,0", "[[ArrayBufferByteLength]]", "number", "32",
+ "32", "byteLength", "number", "32", "32" } },
+ { "weakref1", { "object", "Object", "WeakRef {}", "[object WeakRef]", "none" } },
+ { "iterator1", { "function", "Function", "function [Symbol.iterator]( { [native code] }",
+ "function [Symbol.iterator]() { [native code] }" } },
+ { "string2", { "string", "helloworld11", "helloworld11" } },
+ { "boolean2", { "object", "Object", "Boolean{[[PrimitiveValue]]: false}", "false", "[[PrimitiveValue]]",
+ "boolean", "false", "false" } },
+ { "number2", { "number", "111", "111" } },
+ { "obj2", { "object", "Object", "Object", "[object Object]",
+ "key4", "string", "value2", "value2",
+ "key5", "number", "10000", "10000" } },
+ { "arraybuffer2", { "object", "arraybuffer", "Arraybuffer", "ArrayBuffer(24)", "[object ArrayBuffer]",
+ "[[Int8Array]]", "object", "Object", "Int8Array(24)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Uint8Array]]", "object",
+ "Object", "Uint8Array(24)", "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "[[Uint8ClampedArray]]", "object", "Object", "Object",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Int16Array]]", "object",
+ "Object", "Int16Array(12)", "0,0,0,0,0,0,0,0,0,0,0,0", "[[Uint16Array]]", "object",
+ "Object", "Object", "0,0,0,0,0,0,0,0,0,0,0,0", "[[Int32Array]]", "object", "Object",
+ "Int32Array(6)", "0,0,0,0,0,0", "[[Uint32Array]]", "object", "Object", "Object",
+ "0,0,0,0,0,0", "[[Float32Array]]", "object", "Object", "Object", "0,0,0,0,0,0",
+ "[[Float64Array]]", "object", "Object", "Object", "0,0,0", "[[BigInt64Array]]",
+ "object", "Object", "Object", "0,0,0", "[[BigUint64Array]]", "object", "Object",
+ "Object", "0,0,0" } },
+ { "function2", { "function", "Function", "function function2( { [js code] }",
+ "Cannot get source code of funtion" } },
+ { "generator2", { "function", "Generator", "function* generator2( { [js code] }",
+ "Cannot get source code of funtion" } },
+ { "map2", { "object", "map", "Map", "Map(0)", "[object Map]", "size", "number", "0", "0", "[[Entries]]",
+ "object", "array", "Array", "Array(0)", "" } },
+ { "set2", { "object", "set", "Set", "Set(0)", "[object Set]", "size", "number", "0", "0", "[[Entries]]",
+ "object", "array", "Array", "Array(0)", "" } },
+ { "undefined2", { "undefined" } },
+ { "array2", { "object", "array", "Array", "Array(2)", "Lemon, Durian", "0", "string", "Lemon", "Lemon",
+ "1", "string", "Durian", "Durian", "length", "number", "2", "2" } },
+ { "regexp2", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i", "global", "boolean",
+ "false", "false", "ignoreCase", "boolean", "true", "true", "multiline", "boolean", "false",
+ "false", "dotAll", "boolean", "false", "false", "hasIndices", "boolean", "false", "false",
+ "unicode", "boolean", "false", "false", "sticky", "boolean", "false", "false", "flags",
+ "string", "i", "i", "source", "string", "^\\d+\\.\\d+$", "^\\d+\\.\\d+$", "lastIndex",
+ "number", "0", "0" } },
+ { "uint8array2", { "object", "Object", "Uint8Array(24)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", " 0", "number", "0", "0",
+ " 1", "number", "0", "0", " 2", "number", "0", "0", " 3",
+ "number", "0", "0", " 4", "number", "0", "0", " 5", "number", "0",
+ "0", " 6", "number", "0", "0", " 7", "number", "0", "0", " 8",
+ "number", "0", "0", " 9", "number", "0", "0", " 10", "number", "0",
+ "0", " 11", "number", "0", "0", " 12", "number", "0", "0", " 13",
+ "number", "0", "0", " 14", "number", "0", "0", " 15", "number", "0",
+ "0", " 16", "number", "0", "0", " 17", "number", "0", "0", " 18",
+ "number", "0", "0", " 19", "number", "0", "0", " 20", "number", "0",
+ "0", " 21", "number", "0", "0", " 22", "number", "0", "0", " 23",
+ "number", "0", "0" } },
+ { "dataview2", { "object", "Object", "Object", "[object DataView]", "none" } },
+ { "bigint2", { "bigint", "9999n", "9999" } },
+ { "typedarray2", { "object", "Object", "Uint8Array(0)", "", "none" } },
+ { "sharedarraybuffer2", { "object", "Object", "SharedArrayBuffer(32)", "[object SharedArrayBuffer]",
+ "[[Int8Array]]", "object", "Object", "Int8Array(32)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "[[Uint8Array]]", "object", "Object", "Uint8Array(32)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "[[Int16Array]]", "object", "Object", "Int16Array(16)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Int32Array]]", "object", "Object",
+ "Int32Array(8)", "0,0,0,0,0,0,0,0", "[[ArrayBufferByteLength]]", "number", "32",
+ "32", "byteLength", "number", "32", "32" } },
+ { "weakref2", { "object", "Object", "WeakRef {}", "[object WeakRef]", "none" } },
+ { "iterator2", { "function", "Function", "function [Symbol.iterator]( { [native code] }",
+ "function [Symbol.iterator]() { [native code] }" } },
+ { "string3", { "string", "helloworld12", "helloworld12" } },
+ { "boolean3", { "object", "Object", "Boolean{[[PrimitiveValue]]: true}", "true", "[[PrimitiveValue]]",
+ "boolean", "true", "true" } },
+ { "number3", { "number", "3", "3" } },
+ { "string4", { "string", "helloworld123", "helloworld123" } },
+ { "boolean4", { "object", "Object", "Boolean{[[PrimitiveValue]]: true}", "true", "[[PrimitiveValue]]",
+ "boolean", "true", "true" } },
+ { "number4", { "number", "4", "4" } },
+ { "string5", { "string", "helloworld123", "helloworld123" } },
+ { "boolean5", { "object", "Object", "Boolean{[[PrimitiveValue]]: true}", "true", "[[PrimitiveValue]]",
+ "boolean", "true", "true" } },
+ { "number5", { "number", "4", "4" } },
{ "foo", { "function", "Function", "function foo( { [js code] }", "Cannot get source code of funtion"} },
- { "number1", { "number", "80", "80" } },
- { "number2", { "number", "10", "10" } },
- { "number3", { "number", "50", "50" } },
- { "number4", { "number", "50", "50" } },
+ { "string6", { "string", "helloworld", "helloworld" } },
+ { "boolean6", { "object", "Object", "Boolean{[[PrimitiveValue]]: true}", "true", "[[PrimitiveValue]]",
+ "boolean", "true", "true" } },
+ { "number6", { "number", "6", "6" } },
+ { "obj6", { "object", "Object", "Object", "[object Object]",
+ "key6", "string", "value3", "value3",
+ "key7", "number", "10000", "10000" } },
+ { "arraybuffer6", { "object", "arraybuffer", "Arraybuffer", "ArrayBuffer(24)", "[object ArrayBuffer]",
+ "[[Int8Array]]", "object", "Object", "Int8Array(24)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Uint8Array]]", "object",
+ "Object", "Uint8Array(24)", "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "[[Uint8ClampedArray]]", "object", "Object", "Object",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Int16Array]]", "object",
+ "Object", "Int16Array(12)", "0,0,0,0,0,0,0,0,0,0,0,0", "[[Uint16Array]]", "object",
+ "Object", "Object", "0,0,0,0,0,0,0,0,0,0,0,0", "[[Int32Array]]", "object", "Object",
+ "Int32Array(6)", "0,0,0,0,0,0", "[[Uint32Array]]", "object", "Object", "Object",
+ "0,0,0,0,0,0", "[[Float32Array]]", "object", "Object", "Object", "0,0,0,0,0,0",
+ "[[Float64Array]]", "object", "Object", "Object", "0,0,0", "[[BigInt64Array]]",
+ "object", "Object", "Object", "0,0,0", "[[BigUint64Array]]", "object", "Object",
+ "Object", "0,0,0" } },
+ { "function6", { "function", "Function", "function function6( { [js code] }",
+ "Cannot get source code of funtion" } },
+ { "generator6", { "function", "Generator", "function* generator6( { [js code] }",
+ "Cannot get source code of funtion" } },
+ { "map6", { "object", "map", "Map", "Map(0)", "[object Map]", "size", "number", "0", "0", "[[Entries]]",
+ "object", "array", "Array", "Array(0)", "" } },
+ { "set6", { "object", "set", "Set", "Set(0)", "[object Set]", "size", "number", "0", "0", "[[Entries]]",
+ "object", "array", "Array", "Array(0)", "" } },
+ { "undefined6", { "undefined" } },
+ { "array6", { "object", "array", "Array", "Array(2)", "orange, Grape", "0", "string", "orange", "orange",
+ "1", "string", "Grape", "Grape", "length", "number", "2", "2" } },
+ { "regexp6", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i", "global", "boolean",
+ "false", "false", "ignoreCase", "boolean", "true", "true", "multiline", "boolean", "false",
+ "false", "dotAll", "boolean", "false", "false", "hasIndices", "boolean", "false", "false",
+ "unicode", "boolean", "false", "false", "sticky", "boolean", "false", "false", "flags",
+ "string", "i", "i", "source", "string", "^\\d+\\.\\d+$", "^\\d+\\.\\d+$", "lastIndex",
+ "number", "0", "0" } },
+ { "uint8array6", { "object", "Object", "Uint8Array(24)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", " 0", "number", "0", "0",
+ " 1", "number", "0", "0", " 2", "number", "0", "0", " 3",
+ "number", "0", "0", " 4", "number", "0", "0", " 5", "number", "0",
+ "0", " 6", "number", "0", "0", " 7", "number", "0", "0", " 8",
+ "number", "0", "0", " 9", "number", "0", "0", " 10", "number", "0",
+ "0", " 11", "number", "0", "0", " 12", "number", "0", "0", " 13",
+ "number", "0", "0", " 14", "number", "0", "0", " 15", "number", "0",
+ "0", " 16", "number", "0", "0", " 17", "number", "0", "0", " 18",
+ "number", "0", "0", " 19", "number", "0", "0", " 20", "number", "0",
+ "0", " 21", "number", "0", "0", " 22", "number", "0", "0", " 23",
+ "number", "0", "0" } },
+ { "dataview6", { "object", "Object", "Object", "[object DataView]", "none" } },
+ { "bigint6", { "bigint", "99999n", "99999" } },
+ { "string7", { "string", "helloworld", "helloworld" } },
+ { "boolean7", { "object", "Object", "Boolean{[[PrimitiveValue]]: true}", "true", "[[PrimitiveValue]]",
+ "boolean", "true", "true" } },
+ { "number7", { "number", "6", "6" } },
+ { "obj7", { "object", "Object", "Object", "[object Object]",
+ "key6", "string", "value3", "value3",
+ "key7", "number", "10000", "10000" } },
+ { "arraybuffer7", { "object", "arraybuffer", "Arraybuffer", "ArrayBuffer(24)", "[object ArrayBuffer]",
+ "[[Int8Array]]", "object", "Object", "Int8Array(24)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Uint8Array]]", "object",
+ "Object", "Uint8Array(24)", "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "[[Uint8ClampedArray]]", "object", "Object", "Object",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "[[Int16Array]]", "object",
+ "Object", "Int16Array(12)", "0,0,0,0,0,0,0,0,0,0,0,0", "[[Uint16Array]]", "object",
+ "Object", "Object", "0,0,0,0,0,0,0,0,0,0,0,0", "[[Int32Array]]", "object", "Object",
+ "Int32Array(6)", "0,0,0,0,0,0", "[[Uint32Array]]", "object", "Object", "Object",
+ "0,0,0,0,0,0", "[[Float32Array]]", "object", "Object", "Object", "0,0,0,0,0,0",
+ "[[Float64Array]]", "object", "Object", "Object", "0,0,0", "[[BigInt64Array]]",
+ "object", "Object", "Object", "0,0,0", "[[BigUint64Array]]", "object", "Object",
+ "Object", "0,0,0" } },
+ { "function7", { "function", "Function", "function function7( { [js code] }",
+ "Cannot get source code of funtion" } },
+ { "generator7", { "function", "Generator", "function* generator7( { [js code] }",
+ "Cannot get source code of funtion" } },
+ { "map7", { "object", "map", "Map", "Map(0)", "[object Map]", "size", "number", "0", "0", "[[Entries]]",
+ "object", "array", "Array", "Array(0)", "" } },
+ { "set7", { "object", "set", "Set", "Set(0)", "[object Set]", "size", "number", "0", "0", "[[Entries]]",
+ "object", "array", "Array", "Array(0)", "" } },
+ { "undefined", { "undefined" } },
+ { "array7", { "object", "array", "Array", "Array(2)", "orange, Grape", "0", "string", "orange", "orange",
+ "1", "string", "Grape", "Grape", "length", "number", "2", "2" } },
+ { "regexp7", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i", "global", "boolean",
+ "false", "false", "ignoreCase", "boolean", "true", "true", "multiline", "boolean", "false",
+ "false", "dotAll", "boolean", "false", "false", "hasIndices", "boolean", "false", "false",
+ "unicode", "boolean", "false", "false", "sticky", "boolean", "false", "false", "flags",
+ "string", "i", "i", "source", "string", "^\\d+\\.\\d+$", "^\\d+\\.\\d+$", "lastIndex",
+ "number", "0", "0" } },
+ { "uint8array7", { "object", "Object", "Uint8Array(24)",
+ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", " 0", "number", "0", "0",
+ " 1", "number", "0", "0", " 2", "number", "0", "0", " 3",
+ "number", "0", "0", " 4", "number", "0", "0", " 5", "number", "0",
+ "0", " 6", "number", "0", "0", " 7", "number", "0", "0", " 8",
+ "number", "0", "0", " 9", "number", "0", "0", " 10", "number", "0",
+ "0", " 11", "number", "0", "0", " 12", "number", "0", "0", " 13",
+ "number", "0", "0", " 14", "number", "0", "0", " 15", "number", "0",
+ "0", " 16", "number", "0", "0", " 17", "number", "0", "0", " 18",
+ "number", "0", "0", " 19", "number", "0", "0", " 20", "number", "0",
+ "0", " 21", "number", "0", "0", " 22", "number", "0", "0", " 23",
+ "number", "0", "0" } },
+ { "dataview7", { "object", "Object", "Object", "[object DataView]", "none" } },
+ { "bigint7", { "bigint", "99999n", "99999" } },
+ { "*default*", { "function", "Function", "function default( { [js code] }",
+ "Cannot get source code of funtion" } },
};
int32_t index_ {0};