diff --git a/package/PikaStdLib/PikaStdData_List.c b/package/PikaStdLib/PikaStdData_List.c index 59c96a582..7007d20c5 100644 --- a/package/PikaStdLib/PikaStdData_List.c +++ b/package/PikaStdLib/PikaStdData_List.c @@ -41,8 +41,7 @@ void PikaStdData_List_set(PikaObj* self, Arg* arg, int i) { Arg* PikaStdData_List___iter__(PikaObj* self) { obj_setInt(self, "__iter_i", 0); - /* use weak ref to void loop ref */ - return arg_setWeakRefObj(NULL, "", self); + return arg_setRefObj(NULL, "", self); } Arg* PikaStdData_List___next__(PikaObj* self) { diff --git a/port/linux/.vscode/launch.json b/port/linux/.vscode/launch.json index 8ed8e9ecc..1bd4f2ff6 100644 --- a/port/linux/.vscode/launch.json +++ b/port/linux/.vscode/launch.json @@ -11,7 +11,8 @@ "program": "${workspaceFolder}/build/test/pikascript_test", // "program": "${workspaceFolder}/build/boot/demo06-pikamain/pikascript_demo06-pikamain", "args": [ - "--gtest_filter=gc.*", + "--gtest_filter=pikaMain.list_iter", + // "--gtest_filter=gc.*", // "--gtest_filter=parser.bytes_iteral", // "--gtest_filter=parser.list_init_fun", // "--gtest_filter=args.heap_struct_override", diff --git a/port/linux/package/pikascript/pikascript-lib/PikaStdLib/PikaStdData_List.c b/port/linux/package/pikascript/pikascript-lib/PikaStdLib/PikaStdData_List.c index 59c96a582..7007d20c5 100644 --- a/port/linux/package/pikascript/pikascript-lib/PikaStdLib/PikaStdData_List.c +++ b/port/linux/package/pikascript/pikascript-lib/PikaStdLib/PikaStdData_List.c @@ -41,8 +41,7 @@ void PikaStdData_List_set(PikaObj* self, Arg* arg, int i) { Arg* PikaStdData_List___iter__(PikaObj* self) { obj_setInt(self, "__iter_i", 0); - /* use weak ref to void loop ref */ - return arg_setWeakRefObj(NULL, "", self); + return arg_setRefObj(NULL, "", self); } Arg* PikaStdData_List___next__(PikaObj* self) { diff --git a/port/linux/test/pikaMain-test.cpp b/port/linux/test/pikaMain-test.cpp index 6e68bfbd4..c253c2e4b 100644 --- a/port/linux/test/pikaMain-test.cpp +++ b/port/linux/test/pikaMain-test.cpp @@ -279,7 +279,7 @@ TEST(pikaMain, PikaStdData) { EXPECT_EQ(pikaMemNow(), 0); } -TEST(pikaMain, iter) { +TEST(pikaMain, list_method) { /* init */ pikaMemInfo.heapUsedMax = 0; PikaObj* pikaMain = newRootObj((char*)"pikaMain", New_PikaMain); @@ -291,6 +291,23 @@ TEST(pikaMain, iter) { "len = list.len()\n" "a1 = list.get(0)\n" "a2 = list.get(1)\n" + "\n" + ); + /* collect */ + /* assert */ + /* deinit */ + // obj_deinit(globals); + obj_deinit(pikaMain); + EXPECT_EQ(pikaMemNow(), 0); +} + +TEST(pikaMain, list_iter) { + /* init */ + pikaMemInfo.heapUsedMax = 0; + PikaObj* pikaMain = newRootObj((char*)"pikaMain", New_PikaMain); + /* run */ + obj_runDirect(pikaMain, (char*) + "list = PikaStdData.List()\n" "res = iter(list)\n" "\n" );