From 6e1e33fd8ae0de0048a77f6c23b90f4c7b3ac00e Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Fri, 28 Oct 2016 19:39:00 -0400 Subject: [PATCH] vendor: update HCL --- .../hashicorp/hcl/hcl/parser/parser.go | 24 +++++++--- .../hashicorp/hcl/json/parser/flatten.go | 6 +++ .../hashicorp/hcl/json/parser/parser.go | 1 + vendor/vendor.json | 48 +++++++++---------- 4 files changed, 49 insertions(+), 30 deletions(-) diff --git a/vendor/github.com/hashicorp/hcl/hcl/parser/parser.go b/vendor/github.com/hashicorp/hcl/hcl/parser/parser.go index 0aa080f92..54a6493fb 100644 --- a/vendor/github.com/hashicorp/hcl/hcl/parser/parser.go +++ b/vendor/github.com/hashicorp/hcl/hcl/parser/parser.go @@ -50,7 +50,7 @@ func (p *Parser) Parse() (*ast.File, error) { scerr = &PosError{Pos: pos, Err: errors.New(msg)} } - f.Node, err = p.objectList() + f.Node, err = p.objectList(false) if scerr != nil { return nil, scerr } @@ -62,11 +62,23 @@ func (p *Parser) Parse() (*ast.File, error) { return f, nil } -func (p *Parser) objectList() (*ast.ObjectList, error) { +// objectList parses a list of items within an object (generally k/v pairs). +// The parameter" obj" tells this whether to we are within an object (braces: +// '{', '}') or just at the top level. If we're within an object, we end +// at an RBRACE. +func (p *Parser) objectList(obj bool) (*ast.ObjectList, error) { defer un(trace(p, "ParseObjectList")) node := &ast.ObjectList{} for { + if obj { + tok := p.scan() + p.unscan() + if tok.Type == token.RBRACE { + break + } + } + n, err := p.objectItem() if err == errEofToken { break // we are finished @@ -288,7 +300,7 @@ func (p *Parser) objectType() (*ast.ObjectType, error) { Lbrace: p.tok.Pos, } - l, err := p.objectList() + l, err := p.objectList(true) // if we hit RBRACE, we are good to go (means we parsed all Items), if it's // not a RBRACE, it's an syntax error and we just return it. @@ -296,9 +308,9 @@ func (p *Parser) objectType() (*ast.ObjectType, error) { return nil, err } - // If there is no error, we should be at a RBRACE to end the object - if p.tok.Type != token.RBRACE { - return nil, fmt.Errorf("object expected closing RBRACE got: %s", p.tok.Type) + // No error, scan and expect the ending to be a brace + if tok := p.scan(); tok.Type != token.RBRACE { + return nil, fmt.Errorf("object expected closing RBRACE got: %s", tok.Type) } o.List = l diff --git a/vendor/github.com/hashicorp/hcl/json/parser/flatten.go b/vendor/github.com/hashicorp/hcl/json/parser/flatten.go index 6eb14a253..f652d6fe7 100644 --- a/vendor/github.com/hashicorp/hcl/json/parser/flatten.go +++ b/vendor/github.com/hashicorp/hcl/json/parser/flatten.go @@ -48,6 +48,12 @@ func flattenListType( item *ast.ObjectItem, items []*ast.ObjectItem, frontier []*ast.ObjectItem) ([]*ast.ObjectItem, []*ast.ObjectItem) { + // If the list is empty, keep the original list + if len(ot.List) == 0 { + items = append(items, item) + return items, frontier + } + // All the elements of this object must also be objects! for _, subitem := range ot.List { if _, ok := subitem.(*ast.ObjectType); !ok { diff --git a/vendor/github.com/hashicorp/hcl/json/parser/parser.go b/vendor/github.com/hashicorp/hcl/json/parser/parser.go index acf95941f..6f4608530 100644 --- a/vendor/github.com/hashicorp/hcl/json/parser/parser.go +++ b/vendor/github.com/hashicorp/hcl/json/parser/parser.go @@ -86,6 +86,7 @@ func (p *Parser) objectList() (*ast.ObjectList, error) { break } } + return node, nil } diff --git a/vendor/vendor.json b/vendor/vendor.json index 760c52ee4..9760d7554 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -1302,68 +1302,68 @@ { "checksumSHA1": "8OPDk+bKyRGJoKcS4QNw9F7dpE8=", "path": "github.com/hashicorp/hcl", - "revision": "6f5bfed9a0a22222fbe4e731ae3481730ba41e93", - "revisionTime": "2016-10-08T07:35:57Z" + "revision": "8fa153c5b4e9d1ccecda7075821ffc7c1f6d912b", + "revisionTime": "2016-10-28T23:32:40Z" }, { "checksumSHA1": "XQmjDva9JCGGkIecOgwtBEMCJhU=", "path": "github.com/hashicorp/hcl/hcl/ast", - "revision": "6f5bfed9a0a22222fbe4e731ae3481730ba41e93", - "revisionTime": "2016-10-08T07:35:57Z" + "revision": "8fa153c5b4e9d1ccecda7075821ffc7c1f6d912b", + "revisionTime": "2016-10-28T23:32:40Z" }, { "checksumSHA1": "5HVecyfmcTm6OTffEi6LGayQf5M=", "path": "github.com/hashicorp/hcl/hcl/fmtcmd", - "revision": "6f5bfed9a0a22222fbe4e731ae3481730ba41e93", - "revisionTime": "2016-10-08T07:35:57Z" + "revision": "8fa153c5b4e9d1ccecda7075821ffc7c1f6d912b", + "revisionTime": "2016-10-28T23:32:40Z" }, { - "checksumSHA1": "un4pN4yL5bl6LL3CgWacFbIeHVg=", + "checksumSHA1": "croNloscHsjX87X+4/cKOURf1EY=", "path": "github.com/hashicorp/hcl/hcl/parser", - "revision": "6f5bfed9a0a22222fbe4e731ae3481730ba41e93", - "revisionTime": "2016-10-08T07:35:57Z" + "revision": "8fa153c5b4e9d1ccecda7075821ffc7c1f6d912b", + "revisionTime": "2016-10-28T23:32:40Z" }, { "checksumSHA1": "QjoxNbg+jBmtewexLaBZ8EJEl24=", "path": "github.com/hashicorp/hcl/hcl/printer", - "revision": "6f5bfed9a0a22222fbe4e731ae3481730ba41e93", - "revisionTime": "2016-10-08T07:35:57Z" + "revision": "8fa153c5b4e9d1ccecda7075821ffc7c1f6d912b", + "revisionTime": "2016-10-28T23:32:40Z" }, { "checksumSHA1": "lgR7PSAZ0RtvAc9OCtCnNsF/x8g=", "path": "github.com/hashicorp/hcl/hcl/scanner", - "revision": "6f5bfed9a0a22222fbe4e731ae3481730ba41e93", - "revisionTime": "2016-10-08T07:35:57Z" + "revision": "8fa153c5b4e9d1ccecda7075821ffc7c1f6d912b", + "revisionTime": "2016-10-28T23:32:40Z" }, { "checksumSHA1": "JlZmnzqdmFFyb1+2afLyR3BOE/8=", "path": "github.com/hashicorp/hcl/hcl/strconv", - "revision": "6f5bfed9a0a22222fbe4e731ae3481730ba41e93", - "revisionTime": "2016-10-08T07:35:57Z" + "revision": "8fa153c5b4e9d1ccecda7075821ffc7c1f6d912b", + "revisionTime": "2016-10-28T23:32:40Z" }, { "checksumSHA1": "c6yprzj06ASwCo18TtbbNNBHljA=", "path": "github.com/hashicorp/hcl/hcl/token", - "revision": "6f5bfed9a0a22222fbe4e731ae3481730ba41e93", - "revisionTime": "2016-10-08T07:35:57Z" + "revision": "8fa153c5b4e9d1ccecda7075821ffc7c1f6d912b", + "revisionTime": "2016-10-28T23:32:40Z" }, { - "checksumSHA1": "fpQQdjFUZOoslYuFNKZMSO0N0ik=", + "checksumSHA1": "138aCV5n8n7tkGYMsMVQQnnLq+0=", "path": "github.com/hashicorp/hcl/json/parser", - "revision": "6f5bfed9a0a22222fbe4e731ae3481730ba41e93", - "revisionTime": "2016-10-08T07:35:57Z" + "revision": "8fa153c5b4e9d1ccecda7075821ffc7c1f6d912b", + "revisionTime": "2016-10-28T23:32:40Z" }, { "checksumSHA1": "YdvFsNOMSWMLnY6fcliWQa0O5Fw=", "path": "github.com/hashicorp/hcl/json/scanner", - "revision": "6f5bfed9a0a22222fbe4e731ae3481730ba41e93", - "revisionTime": "2016-10-08T07:35:57Z" + "revision": "8fa153c5b4e9d1ccecda7075821ffc7c1f6d912b", + "revisionTime": "2016-10-28T23:32:40Z" }, { "checksumSHA1": "fNlXQCQEnb+B3k5UDL/r15xtSJY=", "path": "github.com/hashicorp/hcl/json/token", - "revision": "6f5bfed9a0a22222fbe4e731ae3481730ba41e93", - "revisionTime": "2016-10-08T07:35:57Z" + "revision": "8fa153c5b4e9d1ccecda7075821ffc7c1f6d912b", + "revisionTime": "2016-10-28T23:32:40Z" }, { "checksumSHA1": "RYz/9y1RMZfg+oMgEyJIWiSl1dU=",