aboutsummaryrefslogtreecommitdiffstats
path: root/prog/encoding.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-08-08 13:06:33 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-08-08 13:07:49 +0200
commitc00da3df66e3212ca3b6ab2a623e9fe5fe6d9e7f (patch)
tree9359ffde3b9ab75a19ef3159e1bd1de7cf31ad17 /prog/encoding.go
parent9a791c399266a650acac45ac55a066a84aad7c64 (diff)
prog: collect all prog comments
Parse and collect and prog comments. Will be needed for runtest annotations (e.g. "requires threaded mode", etc).
Diffstat (limited to 'prog/encoding.go')
-rw-r--r--prog/encoding.go14
1 files changed, 13 insertions, 1 deletions
diff --git a/prog/encoding.go b/prog/encoding.go
index bdb00c7cc..92e2c47f0 100644
--- a/prog/encoding.go
+++ b/prog/encoding.go
@@ -188,10 +188,16 @@ func (target *Target) Deserialize(data []byte) (prog *Prog, err error) {
comment := ""
for p.Scan() {
if p.EOF() {
- comment = ""
+ if comment != "" {
+ prog.Comments = append(prog.Comments, comment)
+ comment = ""
+ }
continue
}
if p.Char() == '#' {
+ if comment != "" {
+ prog.Comments = append(prog.Comments, comment)
+ }
comment = strings.TrimSpace(p.s[p.i+1:])
continue
}
@@ -238,6 +244,9 @@ func (target *Target) Deserialize(data []byte) (prog *Prog, err error) {
if p.Char() != '#' {
return nil, fmt.Errorf("tailing data (line #%v)", p.l)
}
+ if c.Comment != "" {
+ prog.Comments = append(prog.Comments, c.Comment)
+ }
c.Comment = strings.TrimSpace(p.s[p.i+1:])
}
for i := len(c.Args); i < len(meta.Args); i++ {
@@ -251,6 +260,9 @@ func (target *Target) Deserialize(data []byte) (prog *Prog, err error) {
}
comment = ""
}
+ if comment != "" {
+ prog.Comments = append(prog.Comments, comment)
+ }
if err := p.Err(); err != nil {
return nil, err
}