// Copyright 2019 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. package packages import ( "fmt" "strings" ) var allModes = []LoadMode{ NeedName, NeedFiles, NeedCompiledGoFiles, NeedImports, NeedDeps, NeedExportsFile, NeedTypes, NeedSyntax, NeedTypesInfo, NeedTypesSizes, } var modeStrings = []string{ "NeedName", "NeedFiles", "NeedCompiledGoFiles", "NeedImports", "NeedDeps", "NeedExportsFile", "NeedTypes", "NeedSyntax", "NeedTypesInfo", "NeedTypesSizes", } func (mod LoadMode) String() string { m := mod if m == 0 { return "LoadMode(0)" } var out []string for i, x := range allModes { if x > m { break } if (m & x) != 0 { out = append(out, modeStrings[i]) m = m ^ x } } if m != 0 { out = append(out, "Unknown") } return fmt.Sprintf("LoadMode(%s)", strings.Join(out, "|")) }