fix override_rule.mk
diff --git a/parser.go b/parser.go
index 05d9b7b..2157fac 100644
--- a/parser.go
+++ b/parser.go
@@ -159,26 +159,33 @@
} else {
rline = concatline(line)
}
+ if p.handleAssign(line) {
+ return
+ }
+ // not assignment
+ p.parseMaybeRule(rline, semi)
+ return
+}
+
+func (p *parser) handleAssign(line []byte) bool {
aline, _ := removeComment(concatline(line))
aline = trimLeftSpaceBytes(aline)
if len(aline) == 0 {
- return
+ return false
}
// fmt.Printf("assign: %q=>%q\n", line, aline)
i := findLiteralChar(aline, []byte{':', '='}, true)
if i >= 0 {
if aline[i] == '=' {
p.parseAssign(aline, i)
- return
+ return true
}
if aline[i] == ':' && i+1 < len(aline) && aline[i+1] == '=' {
p.parseAssign(aline, i+1)
- return
+ return true
}
}
- // not assignment
- p.parseMaybeRule(rline, semi)
- return
+ return false
}
func (p *parser) parseAssign(line []byte, sep int) {
@@ -472,7 +479,14 @@
}
// e.g. overrider foo := bar
// line will be "foo := bar".
- p.handleRuleOrAssign(data)
+ if p.handleAssign(data) {
+ return
+ }
+ p.defOpt = ""
+ var line []byte
+ line = append(line, []byte("override ")...)
+ line = append(line, data...)
+ p.handleRuleOrAssign(line)
}
func handleExport(p *parser, data []byte, export bool) (hasEqual bool) {
@@ -511,7 +525,14 @@
// e.g. export foo := bar
// line will be "foo := bar".
- p.handleRuleOrAssign(data)
+ if p.handleAssign(data) {
+ return
+ }
+ p.defOpt = ""
+ var line []byte
+ line = append(line, []byte("export ")...)
+ line = append(line, data...)
+ p.handleRuleOrAssign(line)
}
func unexportDirective(p *parser, data []byte) {