diff options
author | 2021-12-22 14:08:08 -0800 | |
---|---|---|
committer | 2021-12-22 14:08:08 -0800 | |
commit | 0484c2378f5f016d9d5b11fe81a8790352c7753e (patch) | |
tree | b25549bd310d1a51a1809f46c886309a048f0d7a | |
parent | 68542bfcb5674a0e2661407c03563f6a90a9243c (diff) |
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
-rw-r--r-- | mk2rbc/mk2rbc_test.go | 27 | ||||
-rw-r--r-- | 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 @@ -1180,6 +1180,33 @@ def init(g, handle): 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", ""))) +`, + }, } var known_variables = []struct { 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) |