aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--parser.go4
-rw-r--r--testcase/target_specific_var_simple.mk3
-rw-r--r--testcase/target_specific_var_timing.mk17
3 files changed, 23 insertions, 1 deletions
diff --git a/parser.go b/parser.go
index 9928202..32f1a08 100644
--- a/parser.go
+++ b/parser.go
@@ -465,7 +465,9 @@ func (p *parser) parse() (mk Makefile, err error) {
switch ch {
case ':':
if i+1 < len(line) && line[i+1] == '=' {
- ast = p.parseAssign(line, i, i+2)
+ if !isRule {
+ ast = p.parseAssign(line, i, i+2)
+ }
} else {
isRule = true
}
diff --git a/testcase/target_specific_var_simple.mk b/testcase/target_specific_var_simple.mk
new file mode 100644
index 0000000..161df90
--- /dev/null
+++ b/testcase/target_specific_var_simple.mk
@@ -0,0 +1,3 @@
+test: X:=PASS
+test:
+ echo $(X)
diff --git a/testcase/target_specific_var_timing.mk b/testcase/target_specific_var_timing.mk
new file mode 100644
index 0000000..42321f4
--- /dev/null
+++ b/testcase/target_specific_var_timing.mk
@@ -0,0 +1,17 @@
+# TODO
+
+PASS:=PASS
+FAIL:=FAIL
+PASS2:=PASS
+
+test: foo
+
+foo: X := $(PASS)
+foo: Y=$(FAIL)
+foo: Z=$(PASS2)
+
+foo:
+ echo $(X) $(Y) $(Z)
+
+PASS:=
+FAIL:=