From 93f1d61a5349ff9950955bd29081c1d6beaa7209 Mon Sep 17 00:00:00 2001 From: emicklei_kramphub Date: Tue, 27 Feb 2018 17:48:46 +0100 Subject: [PATCH] fix issue #49, option parsing --- option.go | 2 +- option_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/option.go b/option.go index a7cc470..fbda399 100644 --- a/option.go +++ b/option.go @@ -166,7 +166,7 @@ func (o *Option) parseAggregate(p *Parser) error { return nil } if tRIGHTCURLY == tok { - continue + return nil } if tSEMICOLON == tok { p.nextPut(pos, tok, lit) // allow for inline comment parsing diff --git a/option_test.go b/option_test.go index b7f175c..a5e91f9 100644 --- a/option_test.go +++ b/option_test.go @@ -213,3 +213,31 @@ option Help = { string_field: "value" }; // inline` t.Fatalf("got [%v] want [%v]", got, want) } } + +func TestFieldCustomOptions(t *testing.T) { + proto := `foo.bar lots = 1 [foo={hello:1}, bar=2];` + p := newParserOn(proto) + f := newNormalField() + err := f.parse(p) + if err != nil { + t.Fatal(err) + } + if got, want := f.Type, "foo.bar"; got != want { + t.Errorf("got [%v] want [%v]", got, want) + } + if got, want := f.Name, "lots"; got != want { + t.Errorf("got [%v] want [%v]", got, want) + } + if got, want := len(f.Options), 2; got != want { + t.Fatalf("got [%v] want [%v]", got, want) + } + if got, want := f.Options[0].Name, "foo"; got != want { + t.Errorf("got [%v] want [%v]", got, want) + } + if got, want := f.Options[1].Name, "bar"; got != want { + t.Errorf("got [%v] want [%v]", got, want) + } + if got, want := f.Options[1].Constant.Source, "2"; got != want { + t.Errorf("got [%v] want [%v]", got, want) + } +}