Allow assignments after a leading tab
diff --git a/eval.go b/eval.go
index 820c462..70288bf 100644
--- a/eval.go
+++ b/eval.go
@@ -226,6 +226,19 @@
ev.filename = ast.filename
ev.lineno = ast.lineno
if ev.lastRule == nil {
+ // This could still be an assignment statement. See
+ // assign_after_tab.mk.
+ if strings.IndexByte(ast.cmd, '=') >= 0 {
+ line := strings.TrimLeft(ast.cmd, " \t")
+ mk, err := ParseMakefileString(line, ast.filename, ast.lineno)
+ if err != nil {
+ panic(err)
+ }
+ if len(mk.stmts) == 1 && mk.stmts[0].(*AssignAST) != nil {
+ ev.eval(mk.stmts[0])
+ }
+ return
+ }
Error(ast.filename, ast.lineno, "*** commands commence before first target.")
}
ev.lastRule.cmds = append(ev.lastRule.cmds, ast.cmd)