Merge "Show correct line numbers for errors in an $(eval)" am: c49c49a69d
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2374719 Change-Id: I1c6f5fccdddcece10d5ebc54e6323dd801fa567e Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
ee245ec9a1
2 changed files with 17 additions and 0 deletions
|
@ -1872,6 +1872,18 @@ func (p *evalNodeParser) parse(ctx *parseContext, node mkparser.Node, args *mkpa
|
|||
if len(nodes) == 0 {
|
||||
return []starlarkNode{}
|
||||
} else if len(nodes) == 1 {
|
||||
// Replace the nodeLocator with one that just returns the location of
|
||||
// the $(eval) node. Otherwise, statements inside an $(eval) will show as
|
||||
// being on line 1 of the file, because they're on line 1 of
|
||||
// strings.NewReader(args.Dump())
|
||||
oldNodeLocator := ctx.script.nodeLocator
|
||||
ctx.script.nodeLocator = func(pos mkparser.Pos) int {
|
||||
return oldNodeLocator(node.Pos())
|
||||
}
|
||||
defer func() {
|
||||
ctx.script.nodeLocator = oldNodeLocator
|
||||
}()
|
||||
|
||||
switch n := nodes[0].(type) {
|
||||
case *mkparser.Assignment:
|
||||
if n.Name.Const() {
|
||||
|
|
|
@ -1567,6 +1567,9 @@ $(foreach x,$(MY_LIST_VAR), \
|
|||
|
||||
$(foreach x,$(MY_LIST_VAR), \
|
||||
$(eval include foo/$(x).mk))
|
||||
|
||||
# Check that we get as least close to correct line numbers for errors on statements inside evals
|
||||
$(eval $(call inherit-product,$(A_VAR)))
|
||||
`,
|
||||
expected: `load("//build/make/core:product_config.rbc", "rblf")
|
||||
load("//foo:font.star", _font_init = "init")
|
||||
|
@ -1592,6 +1595,8 @@ def init(g, handle):
|
|||
if not _varmod_init:
|
||||
rblf.mkerror("product.mk", "Cannot find %s" % ("foo/%s.mk" % x))
|
||||
_varmod_init(g, handle)
|
||||
# Check that we get as least close to correct line numbers for errors on statements inside evals
|
||||
rblf.mk2rbc_error("product.mk:17", "inherit-product/include argument is too complex")
|
||||
`,
|
||||
},
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue