33 lines
794 B
Go
33 lines
794 B
Go
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// This file opens a back door to the parser for golang.org/x/tools/go/gccgoexportdata.
|
|
|
|
package gccgoimporter
|
|
|
|
import (
|
|
"go/types"
|
|
"io"
|
|
)
|
|
|
|
// Parse reads and parses gccgo export data from in and constructs a
|
|
// Package, inserting it into the imports map.
|
|
func Parse(in io.Reader, imports map[string]*types.Package, path string) (_ *types.Package, err error) {
|
|
var p parser
|
|
p.init(path, in, imports)
|
|
defer func() {
|
|
switch x := recover().(type) {
|
|
case nil:
|
|
// success
|
|
case importError:
|
|
err = x
|
|
default:
|
|
panic(x) // resume unexpected panic
|
|
}
|
|
}()
|
|
pkg := p.parsePackage()
|
|
imports[path] = pkg
|
|
return pkg, err
|
|
}
|