aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFumitoshi Ukai <ukai@google.com>2015-08-21 17:10:55 +0900
committerFumitoshi Ukai <ukai@google.com>2015-08-21 17:10:55 +0900
commit1d92d8a4f25e2f39a111410cdfbf1982d88f58e6 (patch)
treea14177d8520f253192cda9cd80adac9a2ceed7b8
parent4b9a795ef636ab82719d5a876f456a36c6621ee6 (diff)
downloadkati-1d92d8a4f25e2f39a111410cdfbf1982d88f58e6.tar.gz
[go] fix multiline_define.mk
-rw-r--r--parser.go14
1 files changed, 10 insertions, 4 deletions
diff --git a/parser.go b/parser.go
index 7d64db2..8f85dd2 100644
--- a/parser.go
+++ b/parser.go
@@ -108,12 +108,14 @@ func (p *parser) readLine() []byte {
}
line = append(line, buf...)
buf = bytes.TrimRight(buf, "\r\n")
+ glog.V(4).Infof("buf:%q", buf)
backslash := false
- for len(buf) > 1 && buf[len(buf)-1] == '\\' {
+ for len(buf) > 0 && buf[len(buf)-1] == '\\' {
buf = buf[:len(buf)-1]
backslash = !backslash
}
if !backslash {
+ glog.V(4).Infof("no concat line:%q", buf)
break
}
}
@@ -677,20 +679,24 @@ func (p *parser) parseLine(line []byte) {
}
func (p *parser) processDefine(line []byte) {
+ line = append(line, '\n')
line = concatline(line)
+ if line[len(line)-1] != '\n' {
+ line = append(line, '\n')
+ }
if glog.V(1) {
glog.Infof("concatline:%q", line)
}
if !p.isEndef(line) {
- if p.inDef != nil {
- p.inDef = append(p.inDef, '\n')
- }
p.inDef = append(p.inDef, line...)
if p.inDef == nil {
p.inDef = []byte{}
}
return
}
+ if p.inDef[len(p.inDef)-1] == '\n' {
+ p.inDef = p.inDef[:len(p.inDef)-1]
+ }
glog.V(1).Infof("multilineAssign %q %q", p.defineVar, p.inDef)
aast, err := newAssignAST(p, p.defineVar, p.inDef, "=")
if err != nil {