From 201df42f5df5f6a7f943dbb9f775ba857b261053 Mon Sep 17 00:00:00 2001 From: Fumitoshi Ukai Date: Tue, 7 Jul 2015 17:31:05 +0900 Subject: fix equal_in_target.mk --- rule_parser.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'rule_parser.go') diff --git a/rule_parser.go b/rule_parser.go index 983358a..3b03bab 100644 --- a/rule_parser.go +++ b/rule_parser.go @@ -133,8 +133,9 @@ func (r *rule) parseVar(s []byte, rhs expr) (*assignAST, error) { // parse parses rule line. // line is rule line until '=', or before ';' -// rhs is not nil, if line ended with '=' (target specific var) -func (r *rule) parse(line []byte, rhs expr) (*assignAST, error) { +// assign is not nil, if line was known as target specific var ': =' +// rhs is not nil, if line ended with '=' (target specific var after evaluated) +func (r *rule) parse(line []byte, assign *assignAST, rhs expr) (*assignAST, error) { var removed bool line, removed = removeComment(line) if removed { @@ -178,6 +179,12 @@ func (r *rule) parse(line []byte, rhs expr) (*assignAST, error) { } rest := line[index:] + if assign != nil { + if len(rest) > 0 { + panic(fmt.Sprintf("pattern specific var? line:%q", line)) + } + return assign, nil + } if rhs != nil { assign, err := r.parseVar(rest, rhs) if err != nil { -- cgit v1.2.3