Loading androidmk/parser/parser.go +3 −6 Original line number Diff line number Diff line Loading @@ -222,7 +222,7 @@ func (p *parser) parseDirective() bool { if d == "ifdef" || d == "ifndef" || d == "ifeq" || d == "ifneq" { d = "el" + d p.ignoreSpaces() expression = p.parseExpression() expression = p.parseExpression('#') expression.TrimRightSpaces() } else { p.errorf("expected ifdef/ifndef/ifeq/ifneq, found %s", d) Loading @@ -232,7 +232,7 @@ func (p *parser) parseDirective() bool { expression, endPos = p.parseDefine() default: p.ignoreSpaces() expression = p.parseExpression() expression = p.parseExpression('#') } p.nodes = append(p.nodes, &Directive{ Loading Loading @@ -338,9 +338,6 @@ loop: value.appendString(`\` + string(p.tok)) } p.accept(p.tok) case '#': p.parseComment() break loop case '$': var variable Variable variable = p.parseVariable() Loading Loading @@ -522,7 +519,7 @@ func (p *parser) parseAssignment(t string, target *MakeString, ident *MakeString // non-whitespace character after the = until the end of the logical line, // which may included escaped newlines p.accept('=') value := p.parseExpression() value := p.parseExpression('#') value.TrimLeftSpaces() if ident.EndsWith('+') && t == "=" { ident.TrimRightOne() Loading androidmk/parser/parser_test.go +50 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,56 @@ var parserTestCases = []struct { }, }, }, { name: "Simple warning", in: `$(warning A warning)`, out: []Node{ &Variable{ Name: SimpleMakeString("warning A warning", NoPos), }, }, }, { name: "Warning with #", in: `$(warning # A warning)`, out: []Node{ &Variable{ Name: SimpleMakeString("warning # A warning", NoPos), }, }, }, { name: "Findstring with #", in: `$(findstring x,x a #)`, out: []Node{ &Variable{ Name: SimpleMakeString("findstring x,x a #", NoPos), }, }, }, { name: "If statement", in: `ifeq (a,b) # comment endif`, out: []Node{ &Directive{ NamePos: NoPos, Name: "ifeq", Args: SimpleMakeString("(a,b) ", NoPos), EndPos: NoPos, }, &Comment{ CommentPos: NoPos, Comment: " comment", }, &Directive{ NamePos: NoPos, Name: "endif", Args: SimpleMakeString("", NoPos), EndPos: NoPos, }, }, }, } func TestParse(t *testing.T) { Loading mk2rbc/mk2rbc_test.go +4 −0 Original line number Diff line number Diff line Loading @@ -254,6 +254,8 @@ def init(g, handle): in: ` $(warning this is the warning) $(warning) $(warning # this warning starts with a pound) $(warning this warning has a # in the middle) $(info this is the info) $(error this is the error) PRODUCT_NAME:=$(shell echo *) Loading @@ -264,6 +266,8 @@ def init(g, handle): cfg = rblf.cfg(handle) rblf.mkwarning("product.mk", "this is the warning") rblf.mkwarning("product.mk", "") rblf.mkwarning("product.mk", "# this warning starts with a pound") rblf.mkwarning("product.mk", "this warning has a # in the middle") rblf.mkinfo("product.mk", "this is the info") rblf.mkerror("product.mk", "this is the error") cfg["PRODUCT_NAME"] = rblf.shell("echo *") Loading Loading
androidmk/parser/parser.go +3 −6 Original line number Diff line number Diff line Loading @@ -222,7 +222,7 @@ func (p *parser) parseDirective() bool { if d == "ifdef" || d == "ifndef" || d == "ifeq" || d == "ifneq" { d = "el" + d p.ignoreSpaces() expression = p.parseExpression() expression = p.parseExpression('#') expression.TrimRightSpaces() } else { p.errorf("expected ifdef/ifndef/ifeq/ifneq, found %s", d) Loading @@ -232,7 +232,7 @@ func (p *parser) parseDirective() bool { expression, endPos = p.parseDefine() default: p.ignoreSpaces() expression = p.parseExpression() expression = p.parseExpression('#') } p.nodes = append(p.nodes, &Directive{ Loading Loading @@ -338,9 +338,6 @@ loop: value.appendString(`\` + string(p.tok)) } p.accept(p.tok) case '#': p.parseComment() break loop case '$': var variable Variable variable = p.parseVariable() Loading Loading @@ -522,7 +519,7 @@ func (p *parser) parseAssignment(t string, target *MakeString, ident *MakeString // non-whitespace character after the = until the end of the logical line, // which may included escaped newlines p.accept('=') value := p.parseExpression() value := p.parseExpression('#') value.TrimLeftSpaces() if ident.EndsWith('+') && t == "=" { ident.TrimRightOne() Loading
androidmk/parser/parser_test.go +50 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,56 @@ var parserTestCases = []struct { }, }, }, { name: "Simple warning", in: `$(warning A warning)`, out: []Node{ &Variable{ Name: SimpleMakeString("warning A warning", NoPos), }, }, }, { name: "Warning with #", in: `$(warning # A warning)`, out: []Node{ &Variable{ Name: SimpleMakeString("warning # A warning", NoPos), }, }, }, { name: "Findstring with #", in: `$(findstring x,x a #)`, out: []Node{ &Variable{ Name: SimpleMakeString("findstring x,x a #", NoPos), }, }, }, { name: "If statement", in: `ifeq (a,b) # comment endif`, out: []Node{ &Directive{ NamePos: NoPos, Name: "ifeq", Args: SimpleMakeString("(a,b) ", NoPos), EndPos: NoPos, }, &Comment{ CommentPos: NoPos, Comment: " comment", }, &Directive{ NamePos: NoPos, Name: "endif", Args: SimpleMakeString("", NoPos), EndPos: NoPos, }, }, }, } func TestParse(t *testing.T) { Loading
mk2rbc/mk2rbc_test.go +4 −0 Original line number Diff line number Diff line Loading @@ -254,6 +254,8 @@ def init(g, handle): in: ` $(warning this is the warning) $(warning) $(warning # this warning starts with a pound) $(warning this warning has a # in the middle) $(info this is the info) $(error this is the error) PRODUCT_NAME:=$(shell echo *) Loading @@ -264,6 +266,8 @@ def init(g, handle): cfg = rblf.cfg(handle) rblf.mkwarning("product.mk", "this is the warning") rblf.mkwarning("product.mk", "") rblf.mkwarning("product.mk", "# this warning starts with a pound") rblf.mkwarning("product.mk", "this warning has a # in the middle") rblf.mkinfo("product.mk", "this is the info") rblf.mkerror("product.mk", "this is the error") cfg["PRODUCT_NAME"] = rblf.shell("echo *") Loading