From 0484c2378f5f016d9d5b11fe81a8790352c7753e Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Wed, 22 Dec 2021 14:08:08 -0800 Subject: [PATCH] Fix "unknown binary op: string + list" errors Convert lists to strings when adding them to a string. Bug: 201700692 Test: go test Change-Id: Iefb68f48191136e7115a6d6bfa0608c73d5afdac --- mk2rbc/mk2rbc_test.go | 27 +++++++++++++++++++++++++++ mk2rbc/variable.go | 12 +++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/mk2rbc/mk2rbc_test.go b/mk2rbc/mk2rbc_test.go index 94c4fe6fa..b06ae88f4 100644 --- a/mk2rbc/mk2rbc_test.go +++ b/mk2rbc/mk2rbc_test.go @@ -1178,6 +1178,33 @@ 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"]] +`, + }, + { + desc: "List appended to string", + mkname: "product.mk", + in: ` +NATIVE_BRIDGE_PRODUCT_PACKAGES := \ + libnative_bridge_vdso.native_bridge \ + native_bridge_guest_app_process.native_bridge \ + native_bridge_guest_linker.native_bridge + +NATIVE_BRIDGE_MODIFIED_GUEST_LIBS := \ + libaaudio \ + libamidi \ + libandroid \ + libandroid_runtime + +NATIVE_BRIDGE_PRODUCT_PACKAGES += \ + $(addsuffix .native_bridge,$(NATIVE_BRIDGE_ORIG_GUEST_LIBS)) +`, + expected: `load("//build/make/core:product_config.rbc", "rblf") + +def init(g, handle): + cfg = rblf.cfg(handle) + g["NATIVE_BRIDGE_PRODUCT_PACKAGES"] = "libnative_bridge_vdso.native_bridge native_bridge_guest_app_process.native_bridge native_bridge_guest_linker.native_bridge" + g["NATIVE_BRIDGE_MODIFIED_GUEST_LIBS"] = "libaaudio libamidi libandroid libandroid_runtime" + g["NATIVE_BRIDGE_PRODUCT_PACKAGES"] += " " + " ".join(rblf.addsuffix(".native_bridge", g.get("NATIVE_BRIDGE_ORIG_GUEST_LIBS", ""))) `, }, } diff --git a/mk2rbc/variable.go b/mk2rbc/variable.go index 6b67a7cb9..f7adca568 100644 --- a/mk2rbc/variable.go +++ b/mk2rbc/variable.go @@ -81,10 +81,12 @@ func (pcv productConfigVariable) emitSet(gctx *generationContext, asgn *assignme emitAppend := func() { pcv.emitGet(gctx, true) gctx.write(" += ") + value := asgn.value if pcv.valueType() == starlarkTypeString { gctx.writef(`" " + `) + value = &toStringExpr{expr: value} } - asgn.value.emit(gctx) + value.emit(gctx) } switch asgn.flavor { @@ -136,10 +138,12 @@ func (scv otherGlobalVariable) emitSet(gctx *generationContext, asgn *assignment emitAppend := func() { scv.emitGet(gctx, true) gctx.write(" += ") + value := asgn.value if scv.valueType() == starlarkTypeString { gctx.writef(`" " + `) + value = &toStringExpr{expr: value} } - asgn.value.emit(gctx) + value.emit(gctx) } switch asgn.flavor { @@ -193,10 +197,12 @@ func (lv localVariable) emitSet(gctx *generationContext, asgn *assignmentNode) { case asgnAppend: lv.emitGet(gctx, false) gctx.write(" += ") + value := asgn.value if lv.valueType() == starlarkTypeString { gctx.writef(`" " + `) + value = &toStringExpr{expr: value} } - asgn.value.emit(gctx) + value.emit(gctx) case asgnMaybeAppend: gctx.writef("%s(%q, ", cfnLocalAppend, lv) asgn.value.emit(gctx)