Skip to content

Commit 92ccf4b

Browse files
peats-bondemicklei
authored andcommitted
Enable parsing package names with a reserved prefix (#90)
1 parent 09df37d commit 92ccf4b

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

package.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func (p *Package) Doc() *Comment {
4040
}
4141

4242
func (p *Package) parse(pr *Parser) error {
43-
_, tok, lit := pr.nextIdentifier()
43+
_, tok, lit := pr.nextIdent(true)
4444
if tIDENT != tok {
4545
if !isKeyword(tok) {
4646
return pr.unexpected(lit, "package identifier", p)

package_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Copyright (c) 2017 Ernest Micklei
2+
//
3+
// MIT License
4+
//
5+
// Permission is hereby granted, free of charge, to any person obtaining
6+
// a copy of this software and associated documentation files (the
7+
// "Software"), to deal in the Software without restriction, including
8+
// without limitation the rights to use, copy, modify, merge, publish,
9+
// distribute, sublicense, and/or sell copies of the Software, and to
10+
// permit persons to whom the Software is furnished to do so, subject to
11+
// the following conditions:
12+
//
13+
// The above copyright notice and this permission notice shall be
14+
// included in all copies or substantial portions of the Software.
15+
//
16+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17+
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18+
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19+
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20+
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21+
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22+
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23+
24+
package proto
25+
26+
import (
27+
"testing"
28+
)
29+
30+
func TestPackageParseWithReservedPrefix(t *testing.T) {
31+
want := "rpc.enum.oneof"
32+
ident := " " + want + ";"
33+
34+
pkg := new(Package)
35+
p := newParserOn(ident)
36+
if err := pkg.parse(p); err != nil {
37+
t.Error(err)
38+
}
39+
40+
if pkg.Name != want {
41+
t.Errorf("got %q want %q", pkg.Name, want)
42+
}
43+
}

0 commit comments

Comments
 (0)