Merge "Replace $(call my-dir) with a string literal"

This commit is contained in:
Treehugger Robot
2022-03-22 03:24:47 +00:00
committed by Gerrit Code Review
3 changed files with 20 additions and 9 deletions

View File

@@ -1376,7 +1376,7 @@ func (p *myDirCallParser) parse(ctx *parseContext, node mkparser.Node, args *mkp
if !args.Empty() { if !args.Empty() {
return ctx.newBadExpr(node, "my-dir function cannot have any arguments passed to it.") return ctx.newBadExpr(node, "my-dir function cannot have any arguments passed to it.")
} }
return &variableRefExpr{ctx.addVariable("LOCAL_PATH"), true} return &stringLiteralExpr{literal: filepath.Dir(ctx.script.mkFile)}
} }
type isProductInListCallParser struct{} type isProductInListCallParser struct{}

View File

@@ -1459,6 +1459,19 @@ def init(g, handle):
g["MY_VAR_4"] = "foo" g["MY_VAR_4"] = "foo"
_my_local_var_with_dashes = ["foo"] _my_local_var_with_dashes = ["foo"]
g["MY_STRING_VAR"] = " ".join(rblf.expand_wildcard("foo/bar.mk")) g["MY_STRING_VAR"] = " ".join(rblf.expand_wildcard("foo/bar.mk"))
`,
},
{
desc: "Set LOCAL_PATH to my-dir",
mkname: "product.mk",
in: `
LOCAL_PATH := $(call my-dir)
`,
expected: `load("//build/make/core:product_config.rbc", "rblf")
def init(g, handle):
cfg = rblf.cfg(handle)
`, `,
}, },
} }

View File

@@ -319,15 +319,13 @@ func (ctx *parseContext) addVariable(name string) variable {
v = &localVariable{baseVariable{nam: name, typ: hintType}} v = &localVariable{baseVariable{nam: name, typ: hintType}}
} else { } else {
vt := hintType vt := hintType
if strings.HasPrefix(name, "LOCAL_") && vt == starlarkTypeUnknown { // Heuristics: local variables that contribute to corresponding config variables
// Heuristics: local variables that contribute to corresponding config variables if cfgVarName, found := localProductConfigVariables[name]; found && vt == starlarkTypeUnknown {
if cfgVarName, found := localProductConfigVariables[name]; found { vi, found2 := KnownVariables[cfgVarName]
vi, found2 := KnownVariables[cfgVarName] if !found2 {
if !found2 { panic(fmt.Errorf("unknown config variable %s for %s", cfgVarName, name))
panic(fmt.Errorf("unknown config variable %s for %s", cfgVarName, name))
}
vt = vi.valueType
} }
vt = vi.valueType
} }
if strings.HasSuffix(name, "_LIST") && vt == starlarkTypeUnknown { if strings.HasSuffix(name, "_LIST") && vt == starlarkTypeUnknown {
// Heuristics: Variables with "_LIST" suffix are lists // Heuristics: Variables with "_LIST" suffix are lists