aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/debug/mod.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/debug/mod.go')
-rw-r--r--src/runtime/debug/mod.go51
1 files changed, 21 insertions, 30 deletions
diff --git a/src/runtime/debug/mod.go b/src/runtime/debug/mod.go
index 0381bdcc53..837cd689a0 100644
--- a/src/runtime/debug/mod.go
+++ b/src/runtime/debug/mod.go
@@ -47,27 +47,9 @@ func readBuildInfo(data string) (*BuildInfo, bool) {
repLine = "=>\t"
)
- readEntryFirstLine := func(elem []string) (Module, bool) {
- if len(elem) != 2 && len(elem) != 3 {
- return Module{}, false
- }
- sum := ""
- if len(elem) == 3 {
- sum = elem[2]
- }
- return Module{
- Path: elem[0],
- Version: elem[1],
- Sum: sum,
- }, true
- }
+ info := &BuildInfo{}
- var (
- info = &BuildInfo{}
- last *Module
- line string
- ok bool
- )
+ var line string
// Reverse of cmd/go/internal/modload.PackageBuildInfo
for len(data) > 0 {
i := strings.IndexByte(data, '\n')
@@ -81,33 +63,42 @@ func readBuildInfo(data string) (*BuildInfo, bool) {
info.Path = elem
case strings.HasPrefix(line, modLine):
elem := strings.Split(line[len(modLine):], "\t")
- last = &info.Main
- *last, ok = readEntryFirstLine(elem)
- if !ok {
+ if len(elem) != 3 {
return nil, false
}
+ info.Main = Module{
+ Path: elem[0],
+ Version: elem[1],
+ Sum: elem[2],
+ }
case strings.HasPrefix(line, depLine):
elem := strings.Split(line[len(depLine):], "\t")
- last = new(Module)
- info.Deps = append(info.Deps, last)
- *last, ok = readEntryFirstLine(elem)
- if !ok {
+ if len(elem) != 2 && len(elem) != 3 {
return nil, false
}
+ sum := ""
+ if len(elem) == 3 {
+ sum = elem[2]
+ }
+ info.Deps = append(info.Deps, &Module{
+ Path: elem[0],
+ Version: elem[1],
+ Sum: sum,
+ })
case strings.HasPrefix(line, repLine):
elem := strings.Split(line[len(repLine):], "\t")
if len(elem) != 3 {
return nil, false
}
- if last == nil {
+ last := len(info.Deps) - 1
+ if last < 0 {
return nil, false
}
- last.Replace = &Module{
+ info.Deps[last].Replace = &Module{
Path: elem[0],
Version: elem[1],
Sum: elem[2],
}
- last = nil
}
}
return info, true