diff --git a/androidmk/androidmk/android.go b/androidmk/androidmk/android.go index 88609849d..b7c54b1db 100644 --- a/androidmk/androidmk/android.go +++ b/androidmk/androidmk/android.go @@ -383,11 +383,15 @@ func local32BitOnly(ctx variableAssignmentContext) error { if err != nil { return err } - if val.(*bpparser.Bool).Value { + boolValue, ok := val.(*bpparser.Bool) + if !ok { + return fmt.Errorf("value should evaluate to boolean literal") + } + if boolValue.Value { thirtyTwo := &bpparser.String{ Value: "32", } - setVariable(ctx.file, false, ctx.prefix, "compile_multilib", thirtyTwo, true) + return setVariable(ctx.file, false, ctx.prefix, "compile_multilib", thirtyTwo, true) } return nil } diff --git a/androidmk/androidmk/androidmk_test.go b/androidmk/androidmk/androidmk_test.go index 7e1a72cd6..3e1d48632 100644 --- a/androidmk/androidmk/androidmk_test.go +++ b/androidmk/androidmk/androidmk_test.go @@ -1338,6 +1338,25 @@ android_app_import { }, apk: "foo.apk", +} +`, + }, + { + desc: "undefined_boolean_var", + in: ` +include $(CLEAR_VARS) +LOCAL_SRC_FILES:= a.cpp +LOCAL_MODULE:= test +LOCAL_32_BIT_ONLY := $(FLAG) +include $(BUILD_EXECUTABLE) +`, + expected: ` +cc_binary { + name: "test", + srcs: ["a.cpp"], + // ANDROIDMK TRANSLATION ERROR: value should evaluate to boolean literal + // LOCAL_32_BIT_ONLY := $(FLAG) + } `, },