...
1
2
3
4
5 package packages
6
7 import (
8 "fmt"
9 "strings"
10 )
11
12 var allModes = []LoadMode{
13 NeedName,
14 NeedFiles,
15 NeedCompiledGoFiles,
16 NeedImports,
17 NeedDeps,
18 NeedExportFile,
19 NeedTypes,
20 NeedSyntax,
21 NeedTypesInfo,
22 NeedTypesSizes,
23 }
24
25 var modeStrings = []string{
26 "NeedName",
27 "NeedFiles",
28 "NeedCompiledGoFiles",
29 "NeedImports",
30 "NeedDeps",
31 "NeedExportFile",
32 "NeedTypes",
33 "NeedSyntax",
34 "NeedTypesInfo",
35 "NeedTypesSizes",
36 }
37
38 func (mod LoadMode) String() string {
39 m := mod
40 if m == 0 {
41 return "LoadMode(0)"
42 }
43 var out []string
44 for i, x := range allModes {
45 if x > m {
46 break
47 }
48 if (m & x) != 0 {
49 out = append(out, modeStrings[i])
50 m = m ^ x
51 }
52 }
53 if m != 0 {
54 out = append(out, "Unknown")
55 }
56 return fmt.Sprintf("LoadMode(%s)", strings.Join(out, "|"))
57 }
58
View as plain text