summaryrefslogtreecommitdiff
path: root/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/gopherjs/gopherjs/compiler/compiler.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/gopherjs/gopherjs/compiler/compiler.go')
-rw-r--r--src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/gopherjs/gopherjs/compiler/compiler.go297
1 files changed, 0 insertions, 297 deletions
diff --git a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/gopherjs/gopherjs/compiler/compiler.go b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/gopherjs/gopherjs/compiler/compiler.go
deleted file mode 100644
index 36ec91a8e95..00000000000
--- a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/gopherjs/gopherjs/compiler/compiler.go
+++ /dev/null
@@ -1,297 +0,0 @@
-package compiler
-
-import (
- "bytes"
- "encoding/binary"
- "encoding/gob"
- "encoding/json"
- "fmt"
- "go/token"
- "go/types"
- "io"
- "strings"
-
- "github.com/gopherjs/gopherjs/compiler/prelude"
- "golang.org/x/tools/go/gcexportdata"
-)
-
-var sizes32 = &types.StdSizes{WordSize: 4, MaxAlign: 8}
-var reservedKeywords = make(map[string]bool)
-var _ = ___GOPHERJS_REQUIRES_GO_VERSION_1_12___ // Compile error on other Go versions, because they're not supported.
-
-func init() {
- for _, keyword := range []string{"abstract", "arguments", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "debugger", "default", "delete", "do", "double", "else", "enum", "eval", "export", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if", "implements", "import", "in", "instanceof", "int", "interface", "let", "long", "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof", "undefined", "var", "void", "volatile", "while", "with", "yield"} {
- reservedKeywords[keyword] = true
- }
-}
-
-type ErrorList []error
-
-func (err ErrorList) Error() string {
- return err[0].Error()
-}
-
-type Archive struct {
- ImportPath string
- Name string
- Imports []string
- ExportData []byte
- Declarations []*Decl
- IncJSCode []byte
- FileSet []byte
- Minified bool
-}
-
-type Decl struct {
- FullName string
- Vars []string
- DeclCode []byte
- MethodListCode []byte
- TypeInitCode []byte
- InitCode []byte
- DceObjectFilter string
- DceMethodFilter string
- DceDeps []string
- Blocking bool
-}
-
-type Dependency struct {
- Pkg string
- Type string
- Method string
-}
-
-func ImportDependencies(archive *Archive, importPkg func(string) (*Archive, error)) ([]*Archive, error) {
- var deps []*Archive
- paths := make(map[string]bool)
- var collectDependencies func(path string) error
- collectDependencies = func(path string) error {
- if paths[path] {
- return nil
- }
- dep, err := importPkg(path)
- if err != nil {
- return err
- }
- for _, imp := range dep.Imports {
- if err := collectDependencies(imp); err != nil {
- return err
- }
- }
- deps = append(deps, dep)
- paths[dep.ImportPath] = true
- return nil
- }
-
- if err := collectDependencies("runtime"); err != nil {
- return nil, err
- }
- for _, imp := range archive.Imports {
- if err := collectDependencies(imp); err != nil {
- return nil, err
- }
- }
-
- deps = append(deps, archive)
- return deps, nil
-}
-
-type dceInfo struct {
- decl *Decl
- objectFilter string
- methodFilter string
-}
-
-func WriteProgramCode(pkgs []*Archive, w *SourceMapFilter) error {
- mainPkg := pkgs[len(pkgs)-1]
- minify := mainPkg.Minified
-
- byFilter := make(map[string][]*dceInfo)
- var pendingDecls []*Decl
- for _, pkg := range pkgs {
- for _, d := range pkg.Declarations {
- if d.DceObjectFilter == "" && d.DceMethodFilter == "" {
- pendingDecls = append(pendingDecls, d)
- continue
- }
- info := &dceInfo{decl: d}
- if d.DceObjectFilter != "" {
- info.objectFilter = pkg.ImportPath + "." + d.DceObjectFilter
- byFilter[info.objectFilter] = append(byFilter[info.objectFilter], info)
- }
- if d.DceMethodFilter != "" {
- info.methodFilter = pkg.ImportPath + "." + d.DceMethodFilter
- byFilter[info.methodFilter] = append(byFilter[info.methodFilter], info)
- }
- }
- }
-
- dceSelection := make(map[*Decl]struct{})
- for len(pendingDecls) != 0 {
- d := pendingDecls[len(pendingDecls)-1]
- pendingDecls = pendingDecls[:len(pendingDecls)-1]
-
- dceSelection[d] = struct{}{}
-
- for _, dep := range d.DceDeps {
- if infos, ok := byFilter[dep]; ok {
- delete(byFilter, dep)
- for _, info := range infos {
- if info.objectFilter == dep {
- info.objectFilter = ""
- }
- if info.methodFilter == dep {
- info.methodFilter = ""
- }
- if info.objectFilter == "" && info.methodFilter == "" {
- pendingDecls = append(pendingDecls, info.decl)
- }
- }
- }
- }
- }
-
- if _, err := w.Write([]byte("\"use strict\";\n(function() {\n\n")); err != nil {
- return err
- }
- preludeJS := prelude.Prelude
- if minify {
- preludeJS = prelude.Minified
- }
- if _, err := io.WriteString(w, preludeJS); err != nil {
- return err
- }
- if _, err := w.Write([]byte("\n")); err != nil {
- return err
- }
-
- // write packages
- for _, pkg := range pkgs {
- if err := WritePkgCode(pkg, dceSelection, minify, w); err != nil {
- return err
- }
- }
-
- if _, err := w.Write([]byte("$synthesizeMethods();\nvar $mainPkg = $packages[\"" + string(mainPkg.ImportPath) + "\"];\n$packages[\"runtime\"].$init();\n$go($mainPkg.$init, []);\n$flushConsole();\n\n}).call(this);\n")); err != nil {
- return err
- }
-
- return nil
-}
-
-func WritePkgCode(pkg *Archive, dceSelection map[*Decl]struct{}, minify bool, w *SourceMapFilter) error {
- if w.MappingCallback != nil && pkg.FileSet != nil {
- w.fileSet = token.NewFileSet()
- if err := w.fileSet.Read(json.NewDecoder(bytes.NewReader(pkg.FileSet)).Decode); err != nil {
- panic(err)
- }
- }
- if _, err := w.Write(pkg.IncJSCode); err != nil {
- return err
- }
- if _, err := w.Write(removeWhitespace([]byte(fmt.Sprintf("$packages[\"%s\"] = (function() {\n", pkg.ImportPath)), minify)); err != nil {
- return err
- }
- vars := []string{"$pkg = {}", "$init"}
- var filteredDecls []*Decl
- for _, d := range pkg.Declarations {
- if _, ok := dceSelection[d]; ok {
- vars = append(vars, d.Vars...)
- filteredDecls = append(filteredDecls, d)
- }
- }
- if _, err := w.Write(removeWhitespace([]byte(fmt.Sprintf("\tvar %s;\n", strings.Join(vars, ", "))), minify)); err != nil {
- return err
- }
- for _, d := range filteredDecls {
- if _, err := w.Write(d.DeclCode); err != nil {
- return err
- }
- }
- for _, d := range filteredDecls {
- if _, err := w.Write(d.MethodListCode); err != nil {
- return err
- }
- }
- for _, d := range filteredDecls {
- if _, err := w.Write(d.TypeInitCode); err != nil {
- return err
- }
- }
-
- if _, err := w.Write(removeWhitespace([]byte("\t$init = function() {\n\t\t$pkg.$init = function() {};\n\t\t/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:\n"), minify)); err != nil {
- return err
- }
- for _, d := range filteredDecls {
- if _, err := w.Write(d.InitCode); err != nil {
- return err
- }
- }
- if _, err := w.Write(removeWhitespace([]byte("\t\t/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;\n\t};\n\t$pkg.$init = $init;\n\treturn $pkg;\n})();"), minify)); err != nil {
- return err
- }
- if _, err := w.Write([]byte("\n")); err != nil { // keep this \n even when minified
- return err
- }
- return nil
-}
-
-func ReadArchive(filename, path string, r io.Reader, packages map[string]*types.Package) (*Archive, error) {
- var a Archive
- if err := gob.NewDecoder(r).Decode(&a); err != nil {
- return nil, err
- }
-
- var err error
- packages[path], err = gcexportdata.Read(bytes.NewReader(a.ExportData), token.NewFileSet(), packages, path)
- if err != nil {
- return nil, err
- }
-
- return &a, nil
-}
-
-func WriteArchive(a *Archive, w io.Writer) error {
- return gob.NewEncoder(w).Encode(a)
-}
-
-type SourceMapFilter struct {
- Writer io.Writer
- MappingCallback func(generatedLine, generatedColumn int, originalPos token.Position)
- line int
- column int
- fileSet *token.FileSet
-}
-
-func (f *SourceMapFilter) Write(p []byte) (n int, err error) {
- var n2 int
- for {
- i := bytes.IndexByte(p, '\b')
- w := p
- if i != -1 {
- w = p[:i]
- }
-
- n2, err = f.Writer.Write(w)
- n += n2
- for {
- i := bytes.IndexByte(w, '\n')
- if i == -1 {
- f.column += len(w)
- break
- }
- f.line++
- f.column = 0
- w = w[i+1:]
- }
-
- if err != nil || i == -1 {
- return
- }
- if f.MappingCallback != nil {
- f.MappingCallback(f.line+1, f.column, f.fileSet.Position(token.Pos(binary.BigEndian.Uint32(p[i+1:i+5]))))
- }
- p = p[i+5:]
- n += 5
- }
-}