--- /dev/null
+// 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
+}