summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mk2rbc/mk2rbc.go2
-rw-r--r--mk2rbc/mk2rbc_test.go13
-rw-r--r--mk2rbc/variable.go14
3 files changed, 20 insertions, 9 deletions
diff --git a/mk2rbc/mk2rbc.go b/mk2rbc/mk2rbc.go
index 212b7f658..c881751d7 100644
--- a/mk2rbc/mk2rbc.go
+++ b/mk2rbc/mk2rbc.go
@@ -1376,7 +1376,7 @@ func (p *myDirCallParser) parse(ctx *parseContext, node mkparser.Node, args *mkp
if !args.Empty() {
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{}
diff --git a/mk2rbc/mk2rbc_test.go b/mk2rbc/mk2rbc_test.go
index 1aca983d6..31739fa98 100644
--- a/mk2rbc/mk2rbc_test.go
+++ b/mk2rbc/mk2rbc_test.go
@@ -1461,6 +1461,19 @@ def init(g, handle):
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)
+
+`,
+ },
}
var known_variables = []struct {
diff --git a/mk2rbc/variable.go b/mk2rbc/variable.go
index 506266a29..be1b17428 100644
--- a/mk2rbc/variable.go
+++ b/mk2rbc/variable.go
@@ -319,15 +319,13 @@ func (ctx *parseContext) addVariable(name string) variable {
v = &localVariable{baseVariable{nam: name, typ: hintType}}
} else {
vt := hintType
- if strings.HasPrefix(name, "LOCAL_") && vt == starlarkTypeUnknown {
- // Heuristics: local variables that contribute to corresponding config variables
- if cfgVarName, found := localProductConfigVariables[name]; found {
- vi, found2 := KnownVariables[cfgVarName]
- if !found2 {
- panic(fmt.Errorf("unknown config variable %s for %s", cfgVarName, name))
- }
- vt = vi.valueType
+ // Heuristics: local variables that contribute to corresponding config variables
+ if cfgVarName, found := localProductConfigVariables[name]; found && vt == starlarkTypeUnknown {
+ vi, found2 := KnownVariables[cfgVarName]
+ if !found2 {
+ panic(fmt.Errorf("unknown config variable %s for %s", cfgVarName, name))
}
+ vt = vi.valueType
}
if strings.HasSuffix(name, "_LIST") && vt == starlarkTypeUnknown {
// Heuristics: Variables with "_LIST" suffix are lists