Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7940c6a5 authored by Cole Faust's avatar Cole Faust
Browse files

Remove RBC hints from generated starlark

The hints no longer need to be there in the generated code.

Fixes: 217269465
Test: go test
Change-Id: If2049780a874b42eb9df9351dda4f29c85482470
parent f8a4bb6d
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -1733,8 +1733,9 @@ func (ctx *parseContext) parseMakeString(node mkparser.Node, mk *mkparser.MakeSt
func (ctx *parseContext) handleSimpleStatement(node mkparser.Node) {
	switch x := node.(type) {
	case *mkparser.Comment:
		ctx.maybeHandleAnnotation(x)
		if !ctx.maybeHandleAnnotation(x) {
			ctx.insertComment("#" + x.Comment)
		}
	case *mkparser.Assignment:
		ctx.handleAssignment(x)
	case *mkparser.Variable:
@@ -1764,8 +1765,8 @@ func (ctx *parseContext) handleSimpleStatement(node mkparser.Node) {

// Processes annotation. An annotation is a comment that starts with #RBC# and provides
// a conversion hint -- say, where to look for the dynamically calculated inherit/include
// paths.
func (ctx *parseContext) maybeHandleAnnotation(cnode *mkparser.Comment) {
// paths. Returns true if the comment was a successfully-handled annotation.
func (ctx *parseContext) maybeHandleAnnotation(cnode *mkparser.Comment) bool {
	maybeTrim := func(s, prefix string) (string, bool) {
		if strings.HasPrefix(s, prefix) {
			return strings.TrimSpace(strings.TrimPrefix(s, prefix)), true
@@ -1774,21 +1775,21 @@ func (ctx *parseContext) maybeHandleAnnotation(cnode *mkparser.Comment) {
	}
	annotation, ok := maybeTrim(cnode.Comment, annotationCommentPrefix)
	if !ok {
		return
		return false
	}
	if p, ok := maybeTrim(annotation, "include_top"); ok {
		// Don't allow duplicate include tops, because then we will generate
		// invalid starlark code. (duplicate keys in the _entry dictionary)
		for _, top := range ctx.includeTops {
			if top == p {
				return
				return true
			}
		}
		ctx.includeTops = append(ctx.includeTops, p)
		return
		return true
	}
	ctx.errorf(cnode, "unsupported annotation %s", cnode.Comment)

	return true
}

func (ctx *parseContext) insertComment(s string) {
+2 −6
Original line number Diff line number Diff line
@@ -1071,7 +1071,6 @@ load("//vendor/foo1:cfg.star|init", _cfg_init = "init")
def init(g, handle):
  cfg = rblf.cfg(handle)
  g["MY_PATH"] = "foo"
  #RBC# include_top vendor/foo1
  rblf.inherit(handle, "vendor/foo1/cfg", _cfg_init)
`,
	},
@@ -1083,6 +1082,7 @@ MY_PATH:=foo
#RBC# include_top vendor/foo1
$(call inherit-product,$(MY_PATH)/cfg.mk)
#RBC# include_top vendor/foo1
#RBC# include_top vendor/foo1
$(call inherit-product,$(MY_PATH)/cfg.mk)
`,
		expected: `load("//build/make/core:product_config.rbc", "rblf")
@@ -1091,9 +1091,7 @@ load("//vendor/foo1:cfg.star|init", _cfg_init = "init")
def init(g, handle):
  cfg = rblf.cfg(handle)
  g["MY_PATH"] = "foo"
  #RBC# include_top vendor/foo1
  rblf.inherit(handle, "vendor/foo1/cfg", _cfg_init)
  #RBC# include_top vendor/foo1
  rblf.inherit(handle, "vendor/foo1/cfg", _cfg_init)
`,
	},
@@ -1112,15 +1110,13 @@ $(call inherit-product,$(MY_VAR)/font.mk)

$(call inherit-product,$(MY_VAR)/font.mk)
`,
		expected: `#RBC# include_top foo
load("//build/make/core:product_config.rbc", "rblf")
		expected: `load("//build/make/core:product_config.rbc", "rblf")
load("//foo:font.star|init", _font_init = "init")
load("//bar:font.star|init", _font1_init = "init")

def init(g, handle):
  cfg = rblf.cfg(handle)
  rblf.inherit(handle, "foo/font", _font_init)
  #RBC# include_top foo
  # There's some space and even this comment between the include_top and the inherit-product
  rblf.inherit(handle, "foo/font", _font_init)
  rblf.mkwarning("product.mk:11", "Including a path with a non-constant prefix, please convert this to a simple literal to generate cleaner starlark.")