From b67aa082aa8d512cd23c7d1ddc6ce69ae5868170 Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Mon, 28 Feb 2022 16:39:59 -0800 Subject: [PATCH] Fix issue with referencing the loop variable in a foreach Fixes: 222160672 Test: go test Change-Id: I3f9238d4f1684cf4a2d24c4f7f49c832c3f72b97 --- mk2rbc/expr.go | 1 + mk2rbc/mk2rbc_test.go | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/mk2rbc/expr.go b/mk2rbc/expr.go index 07f7ca189..dc16d1d2f 100644 --- a/mk2rbc/expr.go +++ b/mk2rbc/expr.go @@ -595,6 +595,7 @@ func (cx *callExpr) transform(transformer func(expr starlarkExpr) starlarkExpr) for i, arg := range cx.args { argsCopy[i] = arg.transform(transformer) } + cx.args = argsCopy if replacement := transformer(cx); replacement != nil { return replacement } else { diff --git a/mk2rbc/mk2rbc_test.go b/mk2rbc/mk2rbc_test.go index 447f658ee..554e99eb9 100644 --- a/mk2rbc/mk2rbc_test.go +++ b/mk2rbc/mk2rbc_test.go @@ -1228,6 +1228,9 @@ BOOT_KERNEL_MODULES_LIST := foo.ko BOOT_KERNEL_MODULES_LIST += bar.ko BOOT_KERNEL_MODULES_FILTER_2 := $(foreach m,$(BOOT_KERNEL_MODULES_LIST),%/$(m)) +FOREACH_WITH_IF := $(foreach module,\ + $(BOOT_KERNEL_MODULES_LIST),\ + $(if $(filter $(module),foo.ko),,$(error module "$(module)" has an error!))) `, expected: `load("//build/make/core:product_config.rbc", "rblf") @@ -1238,6 +1241,7 @@ def init(g, handle): g["BOOT_KERNEL_MODULES_LIST"] = ["foo.ko"] g["BOOT_KERNEL_MODULES_LIST"] += ["bar.ko"] g["BOOT_KERNEL_MODULES_FILTER_2"] = ["%%/%s" % m for m in g["BOOT_KERNEL_MODULES_LIST"]] + g["FOREACH_WITH_IF"] = [("" if rblf.filter(module, "foo.ko") else rblf.mkerror("product.mk", "module \"%s\" has an error!" % module)) for module in g["BOOT_KERNEL_MODULES_LIST"]] `, }, {