Linux vmi284606.contaboserver.net 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Apache/2.4.57 (Ubuntu)
: 167.86.127.34 | : 216.73.217.31
Cant Read [ /etc/named.conf ]
7.2.24-0ubuntu0.18.04.17
root
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
local /
go /
src /
go /
types /
testdata /
[ HOME SHELL ]
Name
Size
Permission
Action
blank.src
203
B
-rw-r--r--
builtins.src
23.77
KB
-rw-r--r--
const0.src
8.32
KB
-rw-r--r--
const1.src
8.04
KB
-rw-r--r--
constdecl.src
3.02
KB
-rw-r--r--
conversions.src
1.71
KB
-rw-r--r--
conversions2.src
5.07
KB
-rw-r--r--
cycles.src
2.79
KB
-rw-r--r--
cycles1.src
781
B
-rw-r--r--
cycles2.src
1.21
KB
-rw-r--r--
cycles3.src
675
B
-rw-r--r--
cycles4.src
1.76
KB
-rw-r--r--
cycles5.src
2.91
KB
-rw-r--r--
decls0.src
3.91
KB
-rw-r--r--
decls1.src
3.57
KB
-rw-r--r--
decls2a.src
3.11
KB
-rw-r--r--
decls2b.src
1.87
KB
-rw-r--r--
decls3.src
4.17
KB
-rw-r--r--
decls4.src
2.99
KB
-rw-r--r--
decls5.src
363
B
-rw-r--r--
errors.src
1.9
KB
-rw-r--r--
expr0.src
3.39
KB
-rw-r--r--
expr1.src
2.57
KB
-rw-r--r--
expr2.src
4.63
KB
-rw-r--r--
expr3.src
14.87
KB
-rw-r--r--
gotos.src
5.77
KB
-rw-r--r--
importC.src
1.21
KB
-rw-r--r--
importdecl0a.src
1.24
KB
-rw-r--r--
importdecl0b.src
1000
B
-rw-r--r--
importdecl1a.src
521
B
-rw-r--r--
importdecl1b.src
260
B
-rw-r--r--
init0.src
1.91
KB
-rw-r--r--
init1.src
1.46
KB
-rw-r--r--
init2.src
3.51
KB
-rw-r--r--
issue23203a.src
306
B
-rw-r--r--
issue23203b.src
306
B
-rw-r--r--
issue25008a.src
260
B
-rw-r--r--
issue25008b.src
198
B
-rw-r--r--
issue26390.src
241
B
-rw-r--r--
issue28251.src
1.23
KB
-rw-r--r--
issue6977.src
2.33
KB
-rw-r--r--
issues.src
9.83
KB
-rw-r--r--
labels.src
3.25
KB
-rw-r--r--
literals.src
2.35
KB
-rw-r--r--
methodsets.src
3.16
KB
-rw-r--r--
shifts.src
12.02
KB
-rw-r--r--
stmt0.src
17.79
KB
-rw-r--r--
stmt1.src
3.31
KB
-rw-r--r--
vardecl.src
5.27
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : builtins.src
// Copyright 2012 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. // builtin calls package builtins import "unsafe" func f0() {} func append1() { var b byte var x int var s []byte _ = append() // ERROR not enough arguments _ = append("foo" /* ERROR not a slice */ ) _ = append(nil /* ERROR not a slice */ , s) _ = append(x /* ERROR not a slice */ , s) _ = append(s) _ = append(s, nil...) append /* ERROR not used */ (s) _ = append(s, b) _ = append(s, x /* ERROR cannot use x */ ) _ = append(s, s /* ERROR cannot use s */ ) _ = append(s... /* ERROR can only use ... with matching parameter */ ) _ = append(s, b, s... /* ERROR can only use ... with matching parameter */ ) _ = append(s, 1, 2, 3) _ = append(s, 1, 2, 3, x /* ERROR cannot use x */ , 5, 6, 6) _ = append(s, 1, 2, s... /* ERROR can only use ... with matching parameter */ ) _ = append([]interface{}(nil), 1, 2, "foo", x, 3.1425, false) type S []byte type T string var t T _ = append(s, "foo" /* ERROR cannot convert */ ) _ = append(s, "foo"...) _ = append(S(s), "foo" /* ERROR cannot convert */ ) _ = append(S(s), "foo"...) _ = append(s, t /* ERROR cannot use t */ ) _ = append(s, t...) _ = append(s, T("foo")...) _ = append(S(s), t /* ERROR cannot use t */ ) _ = append(S(s), t...) _ = append(S(s), T("foo")...) _ = append([]string{}, t /* ERROR cannot use t */ , "foo") _ = append([]T{}, t, "foo") } // from the spec func append2() { s0 := []int{0, 0} s1 := append(s0, 2) // append a single element s1 == []int{0, 0, 2} s2 := append(s1, 3, 5, 7) // append multiple elements s2 == []int{0, 0, 2, 3, 5, 7} s3 := append(s2, s0...) // append a slice s3 == []int{0, 0, 2, 3, 5, 7, 0, 0} s4 := append(s3[3:6], s3[2:]...) // append overlapping slice s4 == []int{3, 5, 7, 2, 3, 5, 7, 0, 0} var t []interface{} t = append(t, 42, 3.1415, "foo") // t == []interface{}{42, 3.1415, "foo"} var b []byte b = append(b, "bar"...) // append string contents b == []byte{'b', 'a', 'r' } _ = s4 } func append3() { f1 := func() (s []int) { return } f2 := func() (s []int, x int) { return } f3 := func() (s []int, x, y int) { return } f5 := func() (s []interface{}, x int, y float32, z string, b bool) { return } ff := func() (int, float32) { return 0, 0 } _ = append(f0 /* ERROR used as value */ ()) _ = append(f1()) _ = append(f2()) _ = append(f3()) _ = append(f5()) _ = append(ff /* ERROR not a slice */ ()) // TODO(gri) better error message } func cap1() { var a [10]bool var p *[20]int var c chan string _ = cap() // ERROR not enough arguments _ = cap(1, 2) // ERROR too many arguments _ = cap(42 /* ERROR invalid */) const _3 = cap(a) assert(_3 == 10) const _4 = cap(p) assert(_4 == 20) _ = cap(c) cap /* ERROR not used */ (c) // issue 4744 type T struct{ a [10]int } const _ = cap(((*T)(nil)).a) var s [][]byte _ = cap(s) _ = cap(s... /* ERROR invalid use of \.\.\. */ ) } func cap2() { f1a := func() (a [10]int) { return } f1s := func() (s []int) { return } f2 := func() (s []int, x int) { return } _ = cap(f0 /* ERROR used as value */ ()) _ = cap(f1a()) _ = cap(f1s()) _ = cap(f2()) // ERROR too many arguments } // test cases for issue 7387 func cap3() { var f = func() int { return 0 } var x = f() const ( _ = cap([4]int{}) _ = cap([4]int{x}) _ = cap /* ERROR not constant */ ([4]int{f()}) _ = cap /* ERROR not constant */ ([4]int{cap([]int{})}) _ = cap([4]int{cap([4]int{})}) ) var y float64 var z complex128 const ( _ = cap([4]float64{}) _ = cap([4]float64{y}) _ = cap([4]float64{real(2i)}) _ = cap /* ERROR not constant */ ([4]float64{real(z)}) ) var ch chan [10]int const ( _ = cap /* ERROR not constant */ (<-ch) _ = cap /* ERROR not constant */ ([4]int{(<-ch)[0]}) ) } func close1() { var c chan int var r <-chan int close() // ERROR not enough arguments close(1, 2) // ERROR too many arguments close(42 /* ERROR not a channel */) close(r /* ERROR receive-only channel */) close(c) _ = close /* ERROR used as value */ (c) var s []chan int close(s... /* ERROR invalid use of \.\.\. */ ) } func close2() { f1 := func() (ch chan int) { return } f2 := func() (ch chan int, x int) { return } close(f0 /* ERROR used as value */ ()) close(f1()) close(f2()) // ERROR too many arguments } func complex1() { var i32 int32 var f32 float32 var f64 float64 var c64 complex64 var c128 complex128 _ = complex() // ERROR not enough arguments _ = complex(1) // ERROR not enough arguments _ = complex(true /* ERROR mismatched types */ , 0) _ = complex(i32 /* ERROR expected floating-point */ , 0) _ = complex("foo" /* ERROR mismatched types */ , 0) _ = complex(c64 /* ERROR expected floating-point */ , 0) _ = complex(0 /* ERROR mismatched types */ , true) _ = complex(0 /* ERROR expected floating-point */ , i32) _ = complex(0 /* ERROR mismatched types */ , "foo") _ = complex(0 /* ERROR expected floating-point */ , c64) _ = complex(f32, f32) _ = complex(f32, 1) _ = complex(f32, 1.0) _ = complex(f32, 'a') _ = complex(f64, f64) _ = complex(f64, 1) _ = complex(f64, 1.0) _ = complex(f64, 'a') _ = complex(f32 /* ERROR mismatched types */ , f64) _ = complex(f64 /* ERROR mismatched types */ , f32) _ = complex(1, 1) _ = complex(1, 1.1) _ = complex(1, 'a') complex /* ERROR not used */ (1, 2) var _ complex64 = complex(f32, f32) var _ complex64 = complex /* ERROR cannot use .* in variable declaration */ (f64, f64) var _ complex128 = complex /* ERROR cannot use .* in variable declaration */ (f32, f32) var _ complex128 = complex(f64, f64) // untyped constants const _ int = complex(1, 0) const _ float32 = complex(1, 0) const _ complex64 = complex(1, 0) const _ complex128 = complex(1, 0) const _ = complex(0i, 0i) const _ = complex(0i, 0) const _ int = 1.0 + complex(1, 0i) const _ int = complex /* ERROR int */ (1.1, 0) const _ float32 = complex /* ERROR float32 */ (1, 2) // untyped values var s uint _ = complex(1 /* ERROR integer */ <<s, 0) const _ = complex /* ERROR not constant */ (1 /* ERROR integer */ <<s, 0) var _ int = complex /* ERROR cannot use .* in variable declaration */ (1 /* ERROR integer */ <<s, 0) // floating-point argument types must be identical type F32 float32 type F64 float64 var x32 F32 var x64 F64 c64 = complex(x32, x32) _ = complex(x32 /* ERROR mismatched types */ , f32) _ = complex(f32 /* ERROR mismatched types */ , x32) c128 = complex(x64, x64) _ = c128 _ = complex(x64 /* ERROR mismatched types */ , f64) _ = complex(f64 /* ERROR mismatched types */ , x64) var t []float32 _ = complex(t... /* ERROR invalid use of \.\.\. */ ) } func complex2() { f1 := func() (x float32) { return } f2 := func() (x, y float32) { return } f3 := func() (x, y, z float32) { return } _ = complex(f0 /* ERROR used as value */ ()) _ = complex(f1()) // ERROR not enough arguments _ = complex(f2()) _ = complex(f3()) // ERROR too many arguments } func copy1() { copy() // ERROR not enough arguments copy("foo") // ERROR not enough arguments copy([ /* ERROR copy expects slice arguments */ ...]int{}, []int{}) copy([ /* ERROR copy expects slice arguments */ ]int{}, [...]int{}) copy([ /* ERROR different element types */ ]int8{}, "foo") // spec examples var a = [...]int{0, 1, 2, 3, 4, 5, 6, 7} var s = make([]int, 6) var b = make([]byte, 5) n1 := copy(s, a[0:]) // n1 == 6, s == []int{0, 1, 2, 3, 4, 5} n2 := copy(s, s[2:]) // n2 == 4, s == []int{2, 3, 4, 5, 4, 5} n3 := copy(b, "Hello, World!") // n3 == 5, b == []byte("Hello") _, _, _ = n1, n2, n3 var t [][]int copy(t, t) copy(t /* ERROR copy expects slice arguments */ , nil) copy(nil /* ERROR copy expects slice arguments */ , t) copy(nil /* ERROR copy expects slice arguments */ , nil) copy(t... /* ERROR invalid use of \.\.\. */ ) } func copy2() { f1 := func() (a []int) { return } f2 := func() (a, b []int) { return } f3 := func() (a, b, c []int) { return } copy(f0 /* ERROR used as value */ ()) copy(f1()) // ERROR not enough arguments copy(f2()) copy(f3()) // ERROR too many arguments } func delete1() { var m map[string]int var s string delete() // ERROR not enough arguments delete(1) // ERROR not enough arguments delete(1, 2, 3) // ERROR too many arguments delete(m, 0 /* ERROR not assignable */) delete(m, s) _ = delete /* ERROR used as value */ (m, s) var t []map[string]string delete(t... /* ERROR invalid use of \.\.\. */ ) } func delete2() { f1 := func() (m map[string]int) { return } f2 := func() (m map[string]int, k string) { return } f3 := func() (m map[string]int, k string, x float32) { return } delete(f0 /* ERROR used as value */ ()) delete(f1()) // ERROR not enough arguments delete(f2()) delete(f3()) // ERROR too many arguments } func imag1() { var f32 float32 var f64 float64 var c64 complex64 var c128 complex128 _ = imag() // ERROR not enough arguments _ = imag(1, 2) // ERROR too many arguments _ = imag(10) _ = imag(2.7182818) _ = imag("foo" /* ERROR expected complex */) _ = imag('a') const _5 = imag(1 + 2i) assert(_5 == 2) f32 = _5 f64 = _5 const _6 = imag(0i) assert(_6 == 0) f32 = imag(c64) f64 = imag(c128) f32 = imag /* ERROR cannot use .* in assignment */ (c128) f64 = imag /* ERROR cannot use .* in assignment */ (c64) imag /* ERROR not used */ (c64) _, _ = f32, f64 // complex type may not be predeclared type C64 complex64 type C128 complex128 var x64 C64 var x128 C128 f32 = imag(x64) f64 = imag(x128) var a []complex64 _ = imag(a... /* ERROR invalid use of \.\.\. */ ) // if argument is untyped, result is untyped const _ byte = imag(1.2 + 3i) const _ complex128 = imag(1.2 + 3i) // lhs constant shift operands are typed as complex128 var s uint _ = imag(1 /* ERROR must be integer */ << s) } func imag2() { f1 := func() (x complex128) { return } f2 := func() (x, y complex128) { return } _ = imag(f0 /* ERROR used as value */ ()) _ = imag(f1()) _ = imag(f2()) // ERROR too many arguments } func len1() { const c = "foobar" var a [10]bool var p *[20]int var m map[string]complex128 _ = len() // ERROR not enough arguments _ = len(1, 2) // ERROR too many arguments _ = len(42 /* ERROR invalid */) const _3 = len(c) assert(_3 == 6) const _4 = len(a) assert(_4 == 10) const _5 = len(p) assert(_5 == 20) _ = len(m) len /* ERROR not used */ (c) // esoteric case var t string var hash map[interface{}][]*[10]int const n = len /* ERROR not constant */ (hash[recover()][len(t)]) assert(n == 10) // ok because n has unknown value and no error is reported var ch <-chan int const nn = len /* ERROR not constant */ (hash[<-ch][len(t)]) // issue 4744 type T struct{ a [10]int } const _ = len(((*T)(nil)).a) var s [][]byte _ = len(s) _ = len(s... /* ERROR invalid use of \.\.\. */ ) } func len2() { f1 := func() (x []int) { return } f2 := func() (x, y []int) { return } _ = len(f0 /* ERROR used as value */ ()) _ = len(f1()) _ = len(f2()) // ERROR too many arguments } // test cases for issue 7387 func len3() { var f = func() int { return 0 } var x = f() const ( _ = len([4]int{}) _ = len([4]int{x}) _ = len /* ERROR not constant */ ([4]int{f()}) _ = len /* ERROR not constant */ ([4]int{len([]int{})}) _ = len([4]int{len([4]int{})}) ) var y float64 var z complex128 const ( _ = len([4]float64{}) _ = len([4]float64{y}) _ = len([4]float64{real(2i)}) _ = len /* ERROR not constant */ ([4]float64{real(z)}) ) var ch chan [10]int const ( _ = len /* ERROR not constant */ (<-ch) _ = len /* ERROR not constant */ ([4]int{(<-ch)[0]}) ) } func make1() { var n int var m float32 var s uint _ = make() // ERROR not enough arguments _ = make(1 /* ERROR not a type */) _ = make(int /* ERROR cannot make */) // slices _ = make/* ERROR arguments */ ([]int) _ = make/* ERROR arguments */ ([]int, 2, 3, 4) _ = make([]int, int /* ERROR not an expression */) _ = make([]int, 10, float32 /* ERROR not an expression */) _ = make([]int, "foo" /* ERROR cannot convert */) _ = make([]int, 10, 2.3 /* ERROR truncated */) _ = make([]int, 5, 10.0) _ = make([]int, 0i) _ = make([]int, 1.0) _ = make([]int, 1.0<<s) _ = make([]int, 1.1 /* ERROR int */ <<s) _ = make([]int, - /* ERROR must not be negative */ 1, 10) _ = make([]int, 0, - /* ERROR must not be negative */ 1) _ = make([]int, - /* ERROR must not be negative */ 1, - /* ERROR must not be negative */ 1) _ = make([]int, 1 /* ERROR overflows */ <<100, 1 /* ERROR overflows */ <<100) _ = make([]int, 10 /* ERROR length and capacity swapped */ , 9) _ = make([]int, 1 /* ERROR overflows */ <<100, 12345) _ = make([]int, m /* ERROR must be integer */ ) _ = &make /* ERROR cannot take address */ ([]int, 0) // maps _ = make /* ERROR arguments */ (map[int]string, 10, 20) _ = make(map[int]float32, int /* ERROR not an expression */) _ = make(map[int]float32, "foo" /* ERROR cannot convert */) _ = make(map[int]float32, 10) _ = make(map[int]float32, n) _ = make(map[int]float32, int64(n)) _ = make(map[string]bool, 10.0) _ = make(map[string]bool, 10.0<<s) _ = &make /* ERROR cannot take address */ (map[string]bool) // channels _ = make /* ERROR arguments */ (chan int, 10, 20) _ = make(chan int, int /* ERROR not an expression */) _ = make(chan<- int, "foo" /* ERROR cannot convert */) _ = make(chan int, - /* ERROR must not be negative */ 10) _ = make(<-chan float64, 10) _ = make(chan chan int, n) _ = make(chan string, int64(n)) _ = make(chan bool, 10.0) _ = make(chan bool, 10.0<<s) _ = &make /* ERROR cannot take address */ (chan bool) make /* ERROR not used */ ([]int, 10) var t []int _ = make([]int, t[0], t[1]) _ = make([]int, t... /* ERROR invalid use of \.\.\. */ ) } func make2() { f1 /* ERROR not used */ := func() (x []int) { return } _ = make(f0 /* ERROR not a type */ ()) _ = make(f1 /* ERROR not a type */ ()) } func new1() { _ = new() // ERROR not enough arguments _ = new(1, 2) // ERROR too many arguments _ = new("foo" /* ERROR not a type */) p := new(float64) _ = new(struct{ x, y int }) q := new(*float64) _ = *p == **q new /* ERROR not used */ (int) _ = &new /* ERROR cannot take address */ (int) _ = new(int... /* ERROR invalid use of \.\.\. */ ) } func new2() { f1 /* ERROR not used */ := func() (x []int) { return } _ = new(f0 /* ERROR not a type */ ()) _ = new(f1 /* ERROR not a type */ ()) } func panic1() { panic() // ERROR not enough arguments panic(1, 2) // ERROR too many arguments panic(0) panic("foo") panic(false) panic(1<<10) panic(1 /* ERROR overflows */ <<1000) _ = panic /* ERROR used as value */ (0) var s []byte panic(s) panic(s... /* ERROR invalid use of \.\.\. */ ) } func panic2() { f1 := func() (x int) { return } f2 := func() (x, y int) { return } panic(f0 /* ERROR used as value */ ()) panic(f1()) panic(f2()) // ERROR too many arguments } func print1() { print() print(1) print(1, 2) print("foo") print(2.718281828) print(false) print(1<<10) print(1 /* ERROR overflows */ <<1000) println(nil /* ERROR untyped nil */ ) var s []int print(s... /* ERROR invalid use of \.\.\. */ ) _ = print /* ERROR used as value */ () } func print2() { f1 := func() (x int) { return } f2 := func() (x, y int) { return } f3 := func() (x int, y float32, z string) { return } print(f0 /* ERROR used as value */ ()) print(f1()) print(f2()) print(f3()) } func println1() { println() println(1) println(1, 2) println("foo") println(2.718281828) println(false) println(1<<10) println(1 /* ERROR overflows */ <<1000) println(nil /* ERROR untyped nil */ ) var s []int println(s... /* ERROR invalid use of \.\.\. */ ) _ = println /* ERROR used as value */ () } func println2() { f1 := func() (x int) { return } f2 := func() (x, y int) { return } f3 := func() (x int, y float32, z string) { return } println(f0 /* ERROR used as value */ ()) println(f1()) println(f2()) println(f3()) } func real1() { var f32 float32 var f64 float64 var c64 complex64 var c128 complex128 _ = real() // ERROR not enough arguments _ = real(1, 2) // ERROR too many arguments _ = real(10) _ = real(2.7182818) _ = real("foo" /* ERROR expected complex */) const _5 = real(1 + 2i) assert(_5 == 1) f32 = _5 f64 = _5 const _6 = real(0i) assert(_6 == 0) f32 = real(c64) f64 = real(c128) f32 = real /* ERROR cannot use .* in assignment */ (c128) f64 = real /* ERROR cannot use .* in assignment */ (c64) real /* ERROR not used */ (c64) // complex type may not be predeclared type C64 complex64 type C128 complex128 var x64 C64 var x128 C128 f32 = imag(x64) f64 = imag(x128) _, _ = f32, f64 var a []complex64 _ = real(a... /* ERROR invalid use of \.\.\. */ ) // if argument is untyped, result is untyped const _ byte = real(1 + 2.3i) const _ complex128 = real(1 + 2.3i) // lhs constant shift operands are typed as complex128 var s uint _ = real(1 /* ERROR must be integer */ << s) } func real2() { f1 := func() (x complex128) { return } f2 := func() (x, y complex128) { return } _ = real(f0 /* ERROR used as value */ ()) _ = real(f1()) _ = real(f2()) // ERROR too many arguments } func recover1() { _ = recover() _ = recover(10) // ERROR too many arguments recover() var s []int recover(s... /* ERROR invalid use of \.\.\. */ ) } func recover2() { f1 := func() (x int) { return } f2 := func() (x, y int) { return } _ = recover(f0 /* ERROR used as value */ ()) _ = recover(f1()) // ERROR too many arguments _ = recover(f2()) // ERROR too many arguments } // assuming types.DefaultPtrSize == 8 type S0 struct{ // offset a bool // 0 b rune // 4 c *int // 8 d bool // 16 e complex128 // 24 } // 40 type S1 struct{ // offset x float32 // 0 y string // 8 z *S1 // 24 S0 // 32 } // 72 type S2 struct{ // offset *S1 // 0 } // 8 type S3 struct { // offset a int64 // 0 b int32 // 8 } // 12 type S4 struct { // offset S3 // 0 int32 // 12 } // 16 type S5 struct { // offset a [3]int32 // 0 b int32 // 12 } // 16 func (S2) m() {} func Alignof1() { var x int _ = unsafe.Alignof() // ERROR not enough arguments _ = unsafe.Alignof(1, 2) // ERROR too many arguments _ = unsafe.Alignof(int /* ERROR not an expression */) _ = unsafe.Alignof(42) _ = unsafe.Alignof(new(struct{})) _ = unsafe.Alignof(1<<10) _ = unsafe.Alignof(1 /* ERROR overflows */ <<1000) _ = unsafe.Alignof(nil /* ERROR "untyped nil */ ) unsafe /* ERROR not used */ .Alignof(x) var y S0 assert(unsafe.Alignof(y.a) == 1) assert(unsafe.Alignof(y.b) == 4) assert(unsafe.Alignof(y.c) == 8) assert(unsafe.Alignof(y.d) == 1) assert(unsafe.Alignof(y.e) == 8) var s []byte _ = unsafe.Alignof(s) _ = unsafe.Alignof(s... /* ERROR invalid use of \.\.\. */ ) } func Alignof2() { f1 := func() (x int32) { return } f2 := func() (x, y int32) { return } _ = unsafe.Alignof(f0 /* ERROR used as value */ ()) assert(unsafe.Alignof(f1()) == 4) _ = unsafe.Alignof(f2()) // ERROR too many arguments } func Offsetof1() { var x struct{ f int } _ = unsafe.Offsetof() // ERROR not enough arguments _ = unsafe.Offsetof(1, 2) // ERROR too many arguments _ = unsafe.Offsetof(int /* ERROR not a selector expression */ ) _ = unsafe.Offsetof(x /* ERROR not a selector expression */ ) _ = unsafe.Offsetof(nil /* ERROR not a selector expression */ ) _ = unsafe.Offsetof(x.f) _ = unsafe.Offsetof((x.f)) _ = unsafe.Offsetof((((((((x))).f))))) unsafe /* ERROR not used */ .Offsetof(x.f) var y0 S0 assert(unsafe.Offsetof(y0.a) == 0) assert(unsafe.Offsetof(y0.b) == 4) assert(unsafe.Offsetof(y0.c) == 8) assert(unsafe.Offsetof(y0.d) == 16) assert(unsafe.Offsetof(y0.e) == 24) var y1 S1 assert(unsafe.Offsetof(y1.x) == 0) assert(unsafe.Offsetof(y1.y) == 8) assert(unsafe.Offsetof(y1.z) == 24) assert(unsafe.Offsetof(y1.S0) == 32) assert(unsafe.Offsetof(y1.S0.a) == 0) // relative to S0 assert(unsafe.Offsetof(y1.a) == 32) // relative to S1 assert(unsafe.Offsetof(y1.b) == 36) // relative to S1 assert(unsafe.Offsetof(y1.c) == 40) // relative to S1 assert(unsafe.Offsetof(y1.d) == 48) // relative to S1 assert(unsafe.Offsetof(y1.e) == 56) // relative to S1 var y1p *S1 assert(unsafe.Offsetof(y1p.S0) == 32) type P *S1 var p P = y1p assert(unsafe.Offsetof(p.S0) == 32) var y2 S2 assert(unsafe.Offsetof(y2.S1) == 0) _ = unsafe.Offsetof(y2 /* ERROR embedded via a pointer */ .x) _ = unsafe.Offsetof(y2 /* ERROR method value */ .m) var s []byte _ = unsafe.Offsetof(s... /* ERROR invalid use of \.\.\. */ ) } func Offsetof2() { f1 := func() (x int32) { return } f2 := func() (x, y int32) { return } _ = unsafe.Offsetof(f0 /* ERROR not a selector expression */ ()) _ = unsafe.Offsetof(f1 /* ERROR not a selector expression */ ()) _ = unsafe.Offsetof(f2 /* ERROR not a selector expression */ ()) } func Sizeof1() { var x int _ = unsafe.Sizeof() // ERROR not enough arguments _ = unsafe.Sizeof(1, 2) // ERROR too many arguments _ = unsafe.Sizeof(int /* ERROR not an expression */) _ = unsafe.Sizeof(42) _ = unsafe.Sizeof(new(complex128)) _ = unsafe.Sizeof(1<<10) _ = unsafe.Sizeof(1 /* ERROR overflows */ <<1000) _ = unsafe.Sizeof(nil /* ERROR untyped nil */ ) unsafe /* ERROR not used */ .Sizeof(x) // basic types have size guarantees assert(unsafe.Sizeof(byte(0)) == 1) assert(unsafe.Sizeof(uint8(0)) == 1) assert(unsafe.Sizeof(int8(0)) == 1) assert(unsafe.Sizeof(uint16(0)) == 2) assert(unsafe.Sizeof(int16(0)) == 2) assert(unsafe.Sizeof(uint32(0)) == 4) assert(unsafe.Sizeof(int32(0)) == 4) assert(unsafe.Sizeof(float32(0)) == 4) assert(unsafe.Sizeof(uint64(0)) == 8) assert(unsafe.Sizeof(int64(0)) == 8) assert(unsafe.Sizeof(float64(0)) == 8) assert(unsafe.Sizeof(complex64(0)) == 8) assert(unsafe.Sizeof(complex128(0)) == 16) var y0 S0 assert(unsafe.Sizeof(y0.a) == 1) assert(unsafe.Sizeof(y0.b) == 4) assert(unsafe.Sizeof(y0.c) == 8) assert(unsafe.Sizeof(y0.d) == 1) assert(unsafe.Sizeof(y0.e) == 16) assert(unsafe.Sizeof(y0) == 40) var y1 S1 assert(unsafe.Sizeof(y1) == 72) var y2 S2 assert(unsafe.Sizeof(y2) == 8) var y3 S3 assert(unsafe.Sizeof(y3) == 12) var y4 S4 assert(unsafe.Sizeof(y4) == 16) var y5 S5 assert(unsafe.Sizeof(y5) == 16) var a3 [10]S3 assert(unsafe.Sizeof(a3) == 156) // test case for issue 5670 type T struct { a int32 _ int32 c int32 } assert(unsafe.Sizeof(T{}) == 12) var s []byte _ = unsafe.Sizeof(s) _ = unsafe.Sizeof(s... /* ERROR invalid use of \.\.\. */ ) } func Sizeof2() { f1 := func() (x int64) { return } f2 := func() (x, y int64) { return } _ = unsafe.Sizeof(f0 /* ERROR used as value */ ()) assert(unsafe.Sizeof(f1()) == 8) _ = unsafe.Sizeof(f2()) // ERROR too many arguments } // self-testing only func assert1() { var x int assert() /* ERROR not enough arguments */ assert(1, 2) /* ERROR too many arguments */ assert("foo" /* ERROR boolean constant */ ) assert(x /* ERROR boolean constant */) assert(true) assert /* ERROR failed */ (false) _ = assert(true) var s []byte assert(s... /* ERROR invalid use of \.\.\. */ ) } func assert2() { f1 := func() (x bool) { return } f2 := func() (x bool) { return } assert(f0 /* ERROR used as value */ ()) assert(f1 /* ERROR boolean constant */ ()) assert(f2 /* ERROR boolean constant */ ()) } // self-testing only func trace1() { // Uncomment the code below to test trace - will produce console output // _ = trace /* ERROR no value */ () // _ = trace(1) // _ = trace(true, 1.2, '\'', "foo", 42i, "foo" <= "bar") var s []byte trace(s... /* ERROR invalid use of \.\.\. */ ) } func trace2() { f1 := func() (x int) { return } f2 := func() (x int, y string) { return } f3 := func() (x int, y string, z []int) { return } _ = f1 _ = f2 _ = f3 // Uncomment the code below to test trace - will produce console output // trace(f0()) // trace(f1()) // trace(f2()) // trace(f3()) // trace(f0(), 1) // trace(f1(), 1, 2) // trace(f2(), 1, 2, 3) // trace(f3(), 1, 2, 3, 4) }
Close