diff options
author | Fumitoshi Ukai <ukai@google.com> | 2015-08-21 17:10:55 +0900 |
---|---|---|
committer | Fumitoshi Ukai <ukai@google.com> | 2015-08-21 17:10:55 +0900 |
commit | 1d92d8a4f25e2f39a111410cdfbf1982d88f58e6 (patch) | |
tree | a14177d8520f253192cda9cd80adac9a2ceed7b8 | |
parent | 4b9a795ef636ab82719d5a876f456a36c6621ee6 (diff) | |
download | kati-1d92d8a4f25e2f39a111410cdfbf1982d88f58e6.tar.gz |
[go] fix multiline_define.mk
-rw-r--r-- | parser.go | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -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 { |