Source File
bimport.go
Belonging Package
golang.org/x/tools/internal/gcimporter
// Copyright 2015 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 contains the remaining vestiges of
// $GOROOT/src/go/internal/gcimporter/bimport.go.
package gcimporter
import (
)
func ( string, ...any) {
panic(fmt.Sprintf(, ...))
}
const deltaNewFile = -64 // see cmd/compile/internal/gc/bexport.go
// Synthesize a token.Pos
type fakeFileSet struct {
fset *token.FileSet
files map[string]*fileInfo
}
type fileInfo struct {
file *token.File
lastline int
}
const maxlines = 64 * 1024
func ( *fakeFileSet) ( string, , int) token.Pos {
// TODO(mdempsky): Make use of column.
// Since we don't know the set of needed file positions, we reserve maxlines
// positions per file. We delay calling token.File.SetLines until all
// positions have been calculated (by way of fakeFileSet.setLines), so that
// we can avoid setting unnecessary lines. See also golang/go#46586.
:= .files[]
if == nil {
= &fileInfo{file: .fset.AddFile(, -1, maxlines)}
.files[] =
}
if > maxlines {
= 1
}
if > .lastline {
.lastline =
}
// Return a fake position assuming that f.file consists only of newlines.
return token.Pos(.file.Base() + - 1)
}
func ( *fakeFileSet) () {
fakeLinesOnce.Do(func() {
fakeLines = make([]int, maxlines)
for := range fakeLines {
fakeLines[] =
}
})
for , := range .files {
.file.SetLines(fakeLines[:.lastline])
}
}
var (
fakeLines []int
fakeLinesOnce sync.Once
)
func ( int) types.ChanDir {
// tag values must match the constants in cmd/compile/internal/gc/go.go
switch {
case 1 /* Crecv */ :
return types.RecvOnly
case 2 /* Csend */ :
return types.SendOnly
case 3 /* Cboth */ :
return types.SendRecv
default:
errorf("unexpected channel dir %d", )
return 0
}
}
The pages are generated with Golds v0.7.6. (GOOS=linux GOARCH=amd64)