From 9de9c5f84075b54ed7bc82ac7928497c0fbafb91 Mon Sep 17 00:00:00 2001 From: "jm.hu" <5766215+jnhu76@users.noreply.github.com> Date: Wed, 12 Aug 2026 16:06:05 +0800 Subject: fix(depend): detect appended nested values --- tests/modules/project_depend/test.lua | 19 +++++++++++++++++++ xmake/modules/core/project/depend.lua | 3 +++ 2 files changed, 22 insertions(+) create mode 100644 tests/modules/project_depend/test.lua diff --git a/tests/modules/project_depend/test.lua b/tests/modules/project_depend/test.lua new file mode 100644 index 000000000..2df79ba16 --- /dev/null +++ b/tests/modules/project_depend/test.lua @@ -0,0 +1,19 @@ +import("core.project.depend") + +function test_nested_values_append(t) + local dependinfo = {values = {{"clang", "-m64"}}} + local changed = depend.is_changed(dependinfo, {values = {{"clang", "-m64", "-DFEATURE_ON"}}}) + t:require(changed) +end + +function test_nested_values_remove(t) + local dependinfo = {values = {{"clang", "-m64", "-DFEATURE_ON"}}} + local changed = depend.is_changed(dependinfo, {values = {{"clang", "-m64"}}}) + t:require(changed) +end + +function test_nested_values_unchanged(t) + local dependinfo = {values = {{"clang", "-m64", "-DFEATURE_ON"}}} + local changed = depend.is_changed(dependinfo, {values = {{"clang", "-m64", "-DFEATURE_ON"}}}) + t:require_not(changed) +end diff --git a/xmake/modules/core/project/depend.lua b/xmake/modules/core/project/depend.lua index 511e6fde6..40d6ba757 100644 --- a/xmake/modules/core/project/depend.lua +++ b/xmake/modules/core/project/depend.lua @@ -167,6 +167,9 @@ function is_changed(dependinfo, opt) end return true elseif deptype == "table" then + if #depvalue ~= #optvalue then + return true + end for subidx, subvalue in ipairs(depvalue) do if subvalue ~= optvalue[subidx] then if _is_show_diagnosis_info() then -- cgit v1.3.1