mirror of https://github.com/golang/go.git
Compare commits
6 Commits
03a4a148ad
...
b1de159b4b
| Author | SHA1 | Date |
|---|---|---|
|
|
b1de159b4b | |
|
|
49cdf0c42e | |
|
|
3bf1eecbd3 | |
|
|
8ed23a2936 | |
|
|
ef60769b46 | |
|
|
89eb0c0fc4 |
|
|
@ -8,6 +8,7 @@ package importer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"cmd/compile/internal/base"
|
"cmd/compile/internal/base"
|
||||||
|
"cmd/compile/internal/types"
|
||||||
"cmd/compile/internal/types2"
|
"cmd/compile/internal/types2"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/token"
|
"go/token"
|
||||||
|
|
@ -23,8 +24,6 @@ func errorf(format string, args ...interface{}) {
|
||||||
panic(fmt.Sprintf(format, args...))
|
panic(fmt.Sprintf(format, args...))
|
||||||
}
|
}
|
||||||
|
|
||||||
const deltaNewFile = -64 // see cmd/compile/internal/gc/bexport.go
|
|
||||||
|
|
||||||
// Synthesize a token.Pos
|
// Synthesize a token.Pos
|
||||||
type fakeFileSet struct {
|
type fakeFileSet struct {
|
||||||
fset *token.FileSet
|
fset *token.FileSet
|
||||||
|
|
@ -67,13 +66,12 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
func chanDir(d int) types2.ChanDir {
|
func chanDir(d int) types2.ChanDir {
|
||||||
// tag values must match the constants in cmd/compile/internal/gc/go.go
|
switch types.ChanDir(d) {
|
||||||
switch d {
|
case types.Crecv:
|
||||||
case 1 /* Crecv */ :
|
|
||||||
return types2.RecvOnly
|
return types2.RecvOnly
|
||||||
case 2 /* Csend */ :
|
case types.Csend:
|
||||||
return types2.SendOnly
|
return types2.SendOnly
|
||||||
case 3 /* Cboth */ :
|
case types.Cboth:
|
||||||
return types2.SendRecv
|
return types2.SendRecv
|
||||||
default:
|
default:
|
||||||
errorf("unexpected channel dir %d", d)
|
errorf("unexpected channel dir %d", d)
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ func newGCM(cipher Block, nonceSize, tagSize int) (AEAD, error) {
|
||||||
|
|
||||||
// NewGCMWithRandomNonce returns the given cipher wrapped in Galois Counter
|
// NewGCMWithRandomNonce returns the given cipher wrapped in Galois Counter
|
||||||
// Mode, with randomly-generated nonces. The cipher must have been created by
|
// Mode, with randomly-generated nonces. The cipher must have been created by
|
||||||
// [aes.NewCipher].
|
// [crypto/aes.NewCipher].
|
||||||
//
|
//
|
||||||
// It generates a random 96-bit nonce, which is prepended to the ciphertext by Seal,
|
// It generates a random 96-bit nonce, which is prepended to the ciphertext by Seal,
|
||||||
// and is extracted from the ciphertext by Open. The NonceSize of the AEAD is zero,
|
// and is extracted from the ciphertext by Open. The NonceSize of the AEAD is zero,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
//
|
||||||
|
PACKAGE issue62640
|
||||||
|
|
||||||
|
IMPORTPATH
|
||||||
|
testdata/issue62640
|
||||||
|
|
||||||
|
FILENAMES
|
||||||
|
testdata/issue62640.go
|
||||||
|
|
||||||
|
TYPES
|
||||||
|
//
|
||||||
|
type E struct{}
|
||||||
|
|
||||||
|
// F should be hidden within S because of the S.F field.
|
||||||
|
func (E) F()
|
||||||
|
|
||||||
|
//
|
||||||
|
type S struct {
|
||||||
|
E
|
||||||
|
F int
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
//
|
||||||
|
PACKAGE issue62640
|
||||||
|
|
||||||
|
IMPORTPATH
|
||||||
|
testdata/issue62640
|
||||||
|
|
||||||
|
FILENAMES
|
||||||
|
testdata/issue62640.go
|
||||||
|
|
||||||
|
TYPES
|
||||||
|
//
|
||||||
|
type E struct{}
|
||||||
|
|
||||||
|
// F should be hidden within S because of the S.F field.
|
||||||
|
func (E) F()
|
||||||
|
|
||||||
|
//
|
||||||
|
type S struct {
|
||||||
|
E
|
||||||
|
F int
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
//
|
||||||
|
PACKAGE issue62640
|
||||||
|
|
||||||
|
IMPORTPATH
|
||||||
|
testdata/issue62640
|
||||||
|
|
||||||
|
FILENAMES
|
||||||
|
testdata/issue62640.go
|
||||||
|
|
||||||
|
TYPES
|
||||||
|
//
|
||||||
|
type E struct{}
|
||||||
|
|
||||||
|
// F should be hidden within S because of the S.F field.
|
||||||
|
func (E) F()
|
||||||
|
|
||||||
|
//
|
||||||
|
type S struct {
|
||||||
|
E
|
||||||
|
F int
|
||||||
|
}
|
||||||
|
|
||||||
|
// F should be hidden within S because of the S.F field.
|
||||||
|
func (S) F()
|
||||||
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
// Copyright 2025 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 issue62640
|
||||||
|
|
||||||
|
type E struct{}
|
||||||
|
|
||||||
|
// F should be hidden within S because of the S.F field.
|
||||||
|
func (E) F() {}
|
||||||
|
|
||||||
|
type S struct {
|
||||||
|
E
|
||||||
|
F int
|
||||||
|
}
|
||||||
|
|
@ -312,8 +312,10 @@ type heapArena struct {
|
||||||
// during marking.
|
// during marking.
|
||||||
pageSpecials [pagesPerArena / 8]uint8
|
pageSpecials [pagesPerArena / 8]uint8
|
||||||
|
|
||||||
// pageUseSpanDartboard is a bitmap that indicates which spans are
|
// pageUseSpanInlineMarkBits is a bitmap where each bit corresponds
|
||||||
// heap spans and also gcUsesSpanDartboard.
|
// to a span, as only spans one page in size can have inline mark bits.
|
||||||
|
// The bit indicates that the span has a spanInlineMarkBits struct
|
||||||
|
// stored directly at the top end of the span's memory.
|
||||||
pageUseSpanInlineMarkBits [pagesPerArena / 8]uint8
|
pageUseSpanInlineMarkBits [pagesPerArena / 8]uint8
|
||||||
|
|
||||||
// checkmarks stores the debug.gccheckmark state. It is only
|
// checkmarks stores the debug.gccheckmark state. It is only
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
// Copyright 2025 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 synctest_test
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
// helperLog is a t.Helper which logs.
|
||||||
|
// Since it is a helper, the log prefix should contain
|
||||||
|
// the caller's file, not helper_test.go.
|
||||||
|
func helperLog(t *testing.T, s string) {
|
||||||
|
t.Helper()
|
||||||
|
t.Log(s)
|
||||||
|
}
|
||||||
|
|
@ -140,6 +140,18 @@ func TestRun(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestHelper(t *testing.T) {
|
||||||
|
runTest(t, []string{"-test.v"}, func() {
|
||||||
|
synctest.Test(t, func(t *testing.T) {
|
||||||
|
helperLog(t, "log in helper")
|
||||||
|
})
|
||||||
|
}, `^=== RUN TestHelper
|
||||||
|
synctest_test.go:.* log in helper
|
||||||
|
--- PASS: TestHelper.*
|
||||||
|
PASS
|
||||||
|
$`)
|
||||||
|
}
|
||||||
|
|
||||||
func wantPanic(t *testing.T, want string) {
|
func wantPanic(t *testing.T, want string) {
|
||||||
if e := recover(); e != nil {
|
if e := recover(); e != nil {
|
||||||
if got := fmt.Sprint(e); got != want {
|
if got := fmt.Sprint(e); got != want {
|
||||||
|
|
|
||||||
|
|
@ -1261,6 +1261,9 @@ func (c *common) Skipped() bool {
|
||||||
// When printing file and line information, that function will be skipped.
|
// When printing file and line information, that function will be skipped.
|
||||||
// Helper may be called simultaneously from multiple goroutines.
|
// Helper may be called simultaneously from multiple goroutines.
|
||||||
func (c *common) Helper() {
|
func (c *common) Helper() {
|
||||||
|
if c.isSynctest {
|
||||||
|
c = c.parent
|
||||||
|
}
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
if c.helperPCs == nil {
|
if c.helperPCs == nil {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue