1
2
3
4
5
6
7 package builtins
8
9 import "unsafe"
10
11 func f0() {}
12
13 func append1() {
14 var b byte
15 var x int
16 var s []byte
17 _ = append()
18 _ = append("foo" )
19 _ = append(nil , s)
20 _ = append(x , s)
21 _ = append(s)
22 _ = append(s, nil...)
23 append (s)
24
25 _ = append(s, b)
26 _ = append(s, x )
27 _ = append(s, s )
28 _ = append(s...)
29 _ = append(s, b, s ...)
30 _ = append(s, 1, 2, 3)
31 _ = append(s, 1, 2, 3, x , 5, 6, 6)
32 _ = append(s, 1, 2 , s...)
33 _ = append([]interface{}(nil), 1, 2, "foo", x, 3.1425, false)
34
35 type S []byte
36 type T string
37 var t T
38 _ = append(s, "foo" )
39 _ = append(s, "foo"...)
40 _ = append(S(s), "foo" )
41 _ = append(S(s), "foo"...)
42 _ = append(s, t )
43 _ = append(s, t...)
44 _ = append(s, T("foo")...)
45 _ = append(S(s), t )
46 _ = append(S(s), t...)
47 _ = append(S(s), T("foo")...)
48 _ = append([]string{}, t , "foo")
49 _ = append([]T{}, t, "foo")
50 }
51
52
53 func append2() {
54 s0 := []int{0, 0}
55 s1 := append(s0, 2)
56 s2 := append(s1, 3, 5, 7)
57 s3 := append(s2, s0...)
58 s4 := append(s3[3:6], s3[2:]...)
59
60 var t []interface{}
61 t = append(t, 42, 3.1415, "foo")
62
63 var b []byte
64 b = append(b, "bar"...)
65
66 _ = s4
67 }
68
69 func append3() {
70 f1 := func() (s []int) { return }
71 f2 := func() (s []int, x int) { return }
72 f3 := func() (s []int, x, y int) { return }
73 f5 := func() (s []interface{}, x int, y float32, z string, b bool) { return }
74 ff := func() (int, float32) { return 0, 0 }
75 _ = append(f0 ())
76 _ = append(f1())
77 _ = append(f2())
78 _ = append(f3())
79 _ = append(f5())
80 _ = append(ff ())
81 }
82
83 func cap1() {
84 var a [10]bool
85 var p *[20]int
86 var c chan string
87 _ = cap()
88 _ = cap(1, 2)
89 _ = cap(42 )
90 const _3 = cap(a)
91 assert(_3 == 10)
92 const _4 = cap(p)
93 assert(_4 == 20)
94 _ = cap(c)
95 cap (c)
96
97
98 type T struct{ a [10]int }
99 const _ = cap(((*T)(nil)).a)
100
101 var s [][]byte
102 _ = cap(s)
103 _ = cap(s... )
104
105 var x int
106 _ = cap(x )
107 }
108
109 func cap2() {
110 f1a := func() (a [10]int) { return }
111 f1s := func() (s []int) { return }
112 f2 := func() (s []int, x int) { return }
113 _ = cap(f0 ())
114 _ = cap(f1a())
115 _ = cap(f1s())
116 _ = cap(f2())
117 }
118
119
120 func cap3() {
121 var f = func() int { return 0 }
122 var x = f()
123 const (
124 _ = cap([4]int{})
125 _ = cap([4]int{x})
126 _ = cap ([4]int{f()})
127 _ = cap ([4]int{cap([]int{})})
128 _ = cap([4]int{cap([4]int{})})
129 )
130 var y float64
131 var z complex128
132 const (
133 _ = cap([4]float64{})
134 _ = cap([4]float64{y})
135 _ = cap([4]float64{real(2i)})
136 _ = cap ([4]float64{real(z)})
137 )
138 var ch chan [10]int
139 const (
140 _ = cap (<-ch)
141 _ = cap ([4]int{(<-ch)[0]})
142 )
143 }
144
145 func clear1() {
146 var a [10]int
147 var m map[float64]string
148 var s []byte
149 clear(a )
150 clear(&a)
151 clear(m)
152 clear(s)
153 clear([]int{})
154 }
155
156 func close1() {
157 var c chan int
158 var r <-chan int
159 close()
160 close(1, 2)
161 close(42 )
162 close(r )
163 close(c)
164 _ = close (c)
165
166 var s []chan int
167 close(s... )
168 }
169
170 func close2() {
171 f1 := func() (ch chan int) { return }
172 f2 := func() (ch chan int, x int) { return }
173 close(f0 ())
174 close(f1())
175 close(f2())
176 }
177
178 func complex1() {
179 var i32 int32
180 var f32 float32
181 var f64 float64
182 var c64 complex64
183 var c128 complex128
184 _ = complex()
185 _ = complex(1)
186 _ = complex(true , 0)
187 _ = complex(i32 , 0)
188 _ = complex("foo" , 0)
189 _ = complex(c64 , 0)
190 _ = complex(0 , true)
191 _ = complex(0 , i32)
192 _ = complex(0 , "foo")
193 _ = complex(0 , c64)
194 _ = complex(f32, f32)
195 _ = complex(f32, 1)
196 _ = complex(f32, 1.0)
197 _ = complex(f32, 'a')
198 _ = complex(f64, f64)
199 _ = complex(f64, 1)
200 _ = complex(f64, 1.0)
201 _ = complex(f64, 'a')
202 _ = complex(f32 , f64)
203 _ = complex(f64 , f32)
204 _ = complex(1, 1)
205 _ = complex(1, 1.1)
206 _ = complex(1, 'a')
207 complex (1, 2)
208
209 var _ complex64 = complex(f32, f32)
210 var _ complex64 = complex (f64, f64)
211
212 var _ complex128 = complex (f32, f32)
213 var _ complex128 = complex(f64, f64)
214
215
216 const _ int = complex(1, 0)
217 const _ float32 = complex(1, 0)
218 const _ complex64 = complex(1, 0)
219 const _ complex128 = complex(1, 0)
220 const _ = complex(0i, 0i)
221 const _ = complex(0i, 0)
222 const _ int = 1.0 + complex(1, 0i)
223
224 const _ int = complex (1.1, 0)
225 const _ float32 = complex (1, 2)
226
227
228 var s uint
229 _ = complex(1 <<s, 0)
230 const _ = complex (1 <<s, 0)
231 var _ int = complex (1 <<s, 0)
232
233
234 type F32 float32
235 type F64 float64
236 var x32 F32
237 var x64 F64
238 c64 = complex(x32, x32)
239 _ = complex(x32 , f32)
240 _ = complex(f32 , x32)
241 c128 = complex(x64, x64)
242 _ = c128
243 _ = complex(x64 , f64)
244 _ = complex(f64 , x64)
245
246 var t []float32
247 _ = complex(t... )
248 }
249
250 func complex2() {
251 f1 := func() (x float32) { return }
252 f2 := func() (x, y float32) { return }
253 f3 := func() (x, y, z float32) { return }
254 _ = complex(f0 ())
255 _ = complex(f1())
256 _ = complex(f2())
257 _ = complex(f3())
258 }
259
260 func copy1() {
261 copy()
262 copy("foo")
263 copy([ ...]int{}, []int{})
264 copy([]int{}, [ ...]int{})
265 copy([ ]int8{}, "foo")
266
267
268 var a = [...]int{0, 1, 2, 3, 4, 5, 6, 7}
269 var s = make([]int, 6)
270 var b = make([]byte, 5)
271 n1 := copy(s, a[0:])
272 n2 := copy(s, s[2:])
273 n3 := copy(b, "Hello, World!")
274 _, _, _ = n1, n2, n3
275
276 var t [][]int
277 copy(t, t)
278 copy(t, nil )
279 copy(nil , t)
280 copy(nil , nil)
281 copy(t... )
282 }
283
284 func copy2() {
285 f1 := func() (a []int) { return }
286 f2 := func() (a, b []int) { return }
287 f3 := func() (a, b, c []int) { return }
288 copy(f0 ())
289 copy(f1())
290 copy(f2())
291 copy(f3())
292 }
293
294 func delete1() {
295 var m map[string]int
296 var s string
297 delete()
298 delete(1)
299 delete(1, 2, 3)
300 delete(m, 0 )
301 delete(m, s)
302 _ = delete (m, s)
303
304 var t []map[string]string
305 delete(t... )
306 }
307
308 func delete2() {
309 f1 := func() (m map[string]int) { return }
310 f2 := func() (m map[string]int, k string) { return }
311 f3 := func() (m map[string]int, k string, x float32) { return }
312 delete(f0 ())
313 delete(f1())
314 delete(f2())
315 delete(f3())
316 }
317
318 func imag1() {
319 var f32 float32
320 var f64 float64
321 var c64 complex64
322 var c128 complex128
323 _ = imag()
324 _ = imag(1, 2)
325 _ = imag(10)
326 _ = imag(2.7182818)
327 _ = imag("foo" )
328 _ = imag('a')
329 const _5 = imag(1 + 2i)
330 assert(_5 == 2)
331 f32 = _5
332 f64 = _5
333 const _6 = imag(0i)
334 assert(_6 == 0)
335 f32 = imag(c64)
336 f64 = imag(c128)
337 f32 = imag (c128)
338 f64 = imag (c64)
339 imag (c64)
340 _, _ = f32, f64
341
342
343 type C64 complex64
344 type C128 complex128
345 var x64 C64
346 var x128 C128
347 f32 = imag(x64)
348 f64 = imag(x128)
349
350 var a []complex64
351 _ = imag(a... )
352
353
354 const _ byte = imag(1.2 + 3i)
355 const _ complex128 = imag(1.2 + 3i)
356
357
358 var s uint
359 _ = imag(1 << s)
360 }
361
362 func imag2() {
363 f1 := func() (x complex128) { return }
364 f2 := func() (x, y complex128) { return }
365 _ = imag(f0 ())
366 _ = imag(f1())
367 _ = imag(f2())
368 }
369
370 func len1() {
371 const c = "foobar"
372 var a [10]bool
373 var p *[20]int
374 var m map[string]complex128
375 _ = len()
376 _ = len(1, 2)
377 _ = len(42 )
378 const _3 = len(c)
379 assert(_3 == 6)
380 const _4 = len(a)
381 assert(_4 == 10)
382 const _5 = len(p)
383 assert(_5 == 20)
384 _ = len(m)
385 len (c)
386
387
388 var t string
389 var hash map[interface{}][]*[10]int
390 const n = len (hash[recover()][len(t)])
391 assert(n == 10)
392 var ch <-chan int
393 const nn = len (hash[<-ch][len(t)])
394
395
396 type T struct{ a [10]int }
397 const _ = len(((*T)(nil)).a)
398
399 var s [][]byte
400 _ = len(s)
401 _ = len(s... )
402 }
403
404 func len2() {
405 f1 := func() (x []int) { return }
406 f2 := func() (x, y []int) { return }
407 _ = len(f0 ())
408 _ = len(f1())
409 _ = len(f2())
410 }
411
412
413 func len3() {
414 var f = func() int { return 0 }
415 var x = f()
416 const (
417 _ = len([4]int{})
418 _ = len([4]int{x})
419 _ = len ([4]int{f()})
420 _ = len ([4]int{len([]int{})})
421 _ = len([4]int{len([4]int{})})
422 )
423 var y float64
424 var z complex128
425 const (
426 _ = len([4]float64{})
427 _ = len([4]float64{y})
428 _ = len([4]float64{real(2i)})
429 _ = len ([4]float64{real(z)})
430 )
431 var ch chan [10]int
432 const (
433 _ = len (<-ch)
434 _ = len ([4]int{(<-ch)[0]})
435 )
436 }
437
438 func make1() {
439 var n int
440 var m float32
441 var s uint
442
443 _ = make()
444 _ = make(1 )
445 _ = make(int )
446
447
448 _ = make ([]int)
449 _ = make ([]int, 2, 3, 4)
450 _ = make([]int, int )
451 _ = make([]int, 10, float32 )
452 _ = make([]int, "foo" )
453 _ = make([]int, 10, 2.3 )
454 _ = make([]int, 5, 10.0)
455 _ = make([]int, 0i)
456 _ = make([]int, 1.0)
457 _ = make([]int, 1.0<<s)
458 _ = make([]int, 1.1 <<s)
459 _ = make([]int, - 1, 10)
460 _ = make([]int, 0, - 1)
461 _ = make([]int, - 1, - 1)
462 _ = make([]int, 1 <<100, 1 <<100)
463 _ = make([]int, 10 , 9)
464 _ = make([]int, 1 <<100, 12345)
465 _ = make([]int, m )
466 _ = &make ([]int, 0)
467
468
469 _ = make (map[int]string, 10, 20)
470 _ = make(map[int]float32, int )
471 _ = make(map[int]float32, "foo" )
472 _ = make(map[int]float32, 10)
473 _ = make(map[int]float32, n)
474 _ = make(map[int]float32, int64(n))
475 _ = make(map[string]bool, 10.0)
476 _ = make(map[string]bool, 10.0<<s)
477 _ = &make (map[string]bool)
478
479
480 _ = make (chan int, 10, 20)
481 _ = make(chan int, int )
482 _ = make(chan<- int, "foo" )
483 _ = make(chan int, - 10)
484 _ = make(<-chan float64, 10)
485 _ = make(chan chan int, n)
486 _ = make(chan string, int64(n))
487 _ = make(chan bool, 10.0)
488 _ = make(chan bool, 10.0<<s)
489 _ = &make (chan bool)
490
491 make ([]int, 10)
492
493 var t []int
494 _ = make([]int, t[0], t[1])
495 _ = make([]int, t... )
496 }
497
498 func make2() {
499 f1 := func() (x []int) { return }
500 _ = make(f0 ())
501 _ = make(f1 ())
502 }
503
504 func max1() {
505 var b bool
506 var c complex128
507 var x int
508 var s string
509 type myint int
510 var m myint
511 _ = max()
512 _ = max(b )
513 _ = max(c )
514 _ = max(x)
515 _ = max(s)
516 _ = max(x, x)
517 _ = max(x, x, x, x, x)
518 var _ int = max (m)
519 _ = max(x, m , x)
520
521 _ = max(1, x)
522 _ = max(1.0, x)
523 _ = max(1.2 , x)
524 _ = max(-10, 1.0, c )
525
526 const (
527 _ = max (x)
528 _ = max(true )
529 _ = max(1)
530 _ = max(1, 2.3, 'a')
531 _ = max(1, "foo" )
532 _ = max(1, 0i )
533 _ = max(1, 2 + 3i )
534 )
535 }
536
537 func max2() {
538 _ = assert(max(0) == 0)
539 _ = assert(max(0, 1) == 1)
540 _ = assert(max(0, -10, 123456789) == 123456789)
541 _ = assert(max(-12345678901234567890, 0) == 0)
542
543 _ = assert(max(1, 2.3) == 2.3)
544 _ = assert(max(1, 2.3, 'a') == 'a')
545
546 _ = assert(max("", "a") == "a")
547 _ = assert(max("abcde", "xyz", "foo", "bar") == "xyz")
548
549 const (
550 _ int = max(1.0)
551 _ float32 = max(1, 2)
552 _ int = max (1, 2.3)
553 _ int = max(1.2, 3)
554 _ byte = max(1, 'a')
555 )
556 }
557
558 func min1() {
559 var b bool
560 var c complex128
561 var x int
562 var s string
563 type myint int
564 var m myint
565 _ = min()
566 _ = min(b )
567 _ = min(c )
568 _ = min(x)
569 _ = min(s)
570 _ = min(x, x)
571 _ = min(x, x, x, x, x)
572 var _ int = min (m)
573 _ = min(x, m , x)
574
575 _ = min(1, x)
576 _ = min(1.0, x)
577 _ = min(1.2 , x)
578 _ = min(-10, 1.0, c )
579
580 const (
581 _ = min (x)
582 _ = min(true )
583 _ = min(1)
584 _ = min(1, 2.3, 'a')
585 _ = min(1, "foo" )
586 _ = min(1, 0i )
587 _ = min(1, 2 + 3i )
588 )
589 }
590
591 func min2() {
592 _ = assert(min(0) == 0)
593 _ = assert(min(0, 1) == 0)
594 _ = assert(min(0, -10, 123456789) == -10)
595 _ = assert(min(-12345678901234567890, 0) == -12345678901234567890)
596
597 _ = assert(min(1, 2.3) == 1)
598 _ = assert(min(1, 2.3, 'a') == 1)
599
600 _ = assert(min("", "a") == "")
601 _ = assert(min("abcde", "xyz", "foo", "bar") == "abcde")
602
603 const (
604 _ int = min(1.0)
605 _ float32 = min(1, 2)
606 _ int = min(1, 2.3)
607 _ int = min (1.2, 3)
608 _ byte = min(1, 'a')
609 )
610 }
611
612
613 func new1() {
614 _ = new()
615 _ = new(1, 2)
616 _ = new(unsafe )
617
618 _ = new(struct{ x, y int })
619 p := new(float64)
620 q := new(*float64)
621 _ = *p == **q
622
623 type G[P any] struct{}
624 _ = new(G[int])
625 _ = new(G )
626
627 new (int)
628 _ = &new (int)
629 _ = new(int... )
630 _ = new(f0 ())
631 _ = new(len )
632 _ = new(1 << 70)
633 }
634
635 func new2() {
636
637 f1 := func() []int { panic(0) }
638 f2 := func() (int, int) { panic(0) }
639 var (
640 _ *[]int = new(f1())
641 _ *func() []int = new(f1)
642 _ *bool = new(false)
643 _ *bool = new(1 < 2)
644 _ *int = new(123)
645 _ *float64 = new(1.0)
646 _ *uint = new(uint(3))
647 _ *rune = new('a')
648 _ *string = new("A")
649 _ *struct{} = new(struct{}{})
650 _ *any = new(any)
651
652 _ = new(f2 ())
653 _ = new(1 << 1000)
654 _ = new(1e10000 )
655 _ = new(nil )
656 _ = new(comparable )
657 _ = new(new )
658 _ = new(panic (0))
659
660
661 _ = new(-1)
662 _ = new(1 + 1)
663 )
664 }
665
666 func panic1() {
667 panic()
668 panic(1, 2)
669 panic(0)
670 panic("foo")
671 panic(false)
672 panic(1<<10)
673 panic(1 << 1000)
674 _ = panic (0)
675
676 var s []byte
677 panic(s)
678 panic(s... )
679 }
680
681 func panic2() {
682 f1 := func() (x int) { return }
683 f2 := func() (x, y int) { return }
684 panic(f0 ())
685 panic(f1())
686 panic(f2())
687 }
688
689 func print1() {
690 print()
691 print(1)
692 print(1, 2)
693 print("foo")
694 print(2.718281828)
695 print(false)
696 print(1<<10)
697 print(1 << 1000)
698 println(nil )
699
700 var s []int
701 print(s... )
702 _ = print ()
703 }
704
705 func print2() {
706 f1 := func() (x int) { return }
707 f2 := func() (x, y int) { return }
708 f3 := func() (x int, y float32, z string) { return }
709 print(f0 ())
710 print(f1())
711 print(f2())
712 print(f3())
713 }
714
715 func println1() {
716 println()
717 println(1)
718 println(1, 2)
719 println("foo")
720 println(2.718281828)
721 println(false)
722 println(1<<10)
723 println(1 << 1000)
724 println(nil )
725
726 var s []int
727 println(s... )
728 _ = println ()
729 }
730
731 func println2() {
732 f1 := func() (x int) { return }
733 f2 := func() (x, y int) { return }
734 f3 := func() (x int, y float32, z string) { return }
735 println(f0 ())
736 println(f1())
737 println(f2())
738 println(f3())
739 }
740
741 func real1() {
742 var f32 float32
743 var f64 float64
744 var c64 complex64
745 var c128 complex128
746 _ = real()
747 _ = real(1, 2)
748 _ = real(10)
749 _ = real(2.7182818)
750 _ = real("foo" )
751 const _5 = real(1 + 2i)
752 assert(_5 == 1)
753 f32 = _5
754 f64 = _5
755 const _6 = real(0i)
756 assert(_6 == 0)
757 f32 = real(c64)
758 f64 = real(c128)
759 f32 = real (c128)
760 f64 = real (c64)
761 real (c64)
762
763
764 type C64 complex64
765 type C128 complex128
766 var x64 C64
767 var x128 C128
768 f32 = imag(x64)
769 f64 = imag(x128)
770 _, _ = f32, f64
771
772 var a []complex64
773 _ = real(a... )
774
775
776 const _ byte = real(1 + 2.3i)
777 const _ complex128 = real(1 + 2.3i)
778
779
780 var s uint
781 _ = real(1 << s)
782 }
783
784 func real2() {
785 f1 := func() (x complex128) { return }
786 f2 := func() (x, y complex128) { return }
787 _ = real(f0 ())
788 _ = real(f1())
789 _ = real(f2())
790 }
791
792 func recover1() {
793 _ = recover()
794 _ = recover(10)
795 recover()
796
797 var s []int
798 recover(s... )
799 }
800
801 func recover2() {
802 f1 := func() (x int) { return }
803 f2 := func() (x, y int) { return }
804 _ = recover(f0 ())
805 _ = recover(f1())
806 _ = recover(f2())
807 }
808
809
810 type S0 struct{
811 a bool
812 b rune
813 c *int
814 d bool
815 e complex128
816 }
817
818 type S1 struct{
819 x float32
820 y string
821 z *S1
822 S0
823 }
824
825 type S2 struct{
826 *S1
827 }
828
829 type S3 struct {
830 a int64
831 b int32
832 }
833
834 type S4 struct {
835 S3
836 int32
837 }
838
839 type S5 struct {
840 a [3]int32
841 b int32
842 }
843
844 func (S2) m() {}
845
846 func Alignof1() {
847 var x int
848 _ = unsafe.Alignof()
849 _ = unsafe.Alignof(1, 2)
850 _ = unsafe.Alignof(int )
851 _ = unsafe.Alignof(42)
852 _ = unsafe.Alignof(new(struct{}))
853 _ = unsafe.Alignof(1<<10)
854 _ = unsafe.Alignof(1 << 1000)
855 _ = unsafe.Alignof(nil )
856 unsafe .Alignof(x)
857
858 var y S0
859 assert(unsafe.Alignof(y.a) == 1)
860 assert(unsafe.Alignof(y.b) == 4)
861 assert(unsafe.Alignof(y.c) == 8)
862 assert(unsafe.Alignof(y.d) == 1)
863 assert(unsafe.Alignof(y.e) == 8)
864
865 var s []byte
866 _ = unsafe.Alignof(s)
867 _ = unsafe.Alignof(s... )
868 }
869
870 func Alignof2() {
871 f1 := func() (x int32) { return }
872 f2 := func() (x, y int32) { return }
873 _ = unsafe.Alignof(f0 ())
874 assert(unsafe.Alignof(f1()) == 4)
875 _ = unsafe.Alignof(f2())
876 }
877
878 func Offsetof1() {
879 var x struct{ f int }
880 _ = unsafe.Offsetof()
881 _ = unsafe.Offsetof(1, 2)
882 _ = unsafe.Offsetof(int )
883 _ = unsafe.Offsetof(x )
884 _ = unsafe.Offsetof(nil )
885 _ = unsafe.Offsetof(x.f)
886 _ = unsafe.Offsetof((x.f))
887 _ = unsafe.Offsetof((((((((x))).f)))))
888 unsafe .Offsetof(x.f)
889
890 var y0 S0
891 assert(unsafe.Offsetof(y0.a) == 0)
892 assert(unsafe.Offsetof(y0.b) == 4)
893 assert(unsafe.Offsetof(y0.c) == 8)
894 assert(unsafe.Offsetof(y0.d) == 16)
895 assert(unsafe.Offsetof(y0.e) == 24)
896
897 var y1 S1
898 assert(unsafe.Offsetof(y1.x) == 0)
899 assert(unsafe.Offsetof(y1.y) == 8)
900 assert(unsafe.Offsetof(y1.z) == 24)
901 assert(unsafe.Offsetof(y1.S0) == 32)
902
903 assert(unsafe.Offsetof(y1.S0.a) == 0)
904 assert(unsafe.Offsetof(y1.a) == 32)
905 assert(unsafe.Offsetof(y1.b) == 36)
906 assert(unsafe.Offsetof(y1.c) == 40)
907 assert(unsafe.Offsetof(y1.d) == 48)
908 assert(unsafe.Offsetof(y1.e) == 56)
909
910 var y1p *S1
911 assert(unsafe.Offsetof(y1p.S0) == 32)
912
913 type P *S1
914 var p P = y1p
915 assert(unsafe.Offsetof(p.S0) == 32)
916
917 var y2 S2
918 assert(unsafe.Offsetof(y2.S1) == 0)
919 _ = unsafe.Offsetof(y2 .x)
920 _ = unsafe.Offsetof(y2 .m)
921
922 var s []byte
923 _ = unsafe.Offsetof(s... )
924 }
925
926 func Offsetof2() {
927 f1 := func() (x int32) { return }
928 f2 := func() (x, y int32) { return }
929 _ = unsafe.Offsetof(f0 ())
930 _ = unsafe.Offsetof(f1 ())
931 _ = unsafe.Offsetof(f2 ())
932 }
933
934 func Sizeof1() {
935 var x int
936 _ = unsafe.Sizeof()
937 _ = unsafe.Sizeof(1, 2)
938 _ = unsafe.Sizeof(int )
939 _ = unsafe.Sizeof(42)
940 _ = unsafe.Sizeof(new(complex128))
941 _ = unsafe.Sizeof(1<<10)
942 _ = unsafe.Sizeof(1 << 1000)
943 _ = unsafe.Sizeof(nil )
944 unsafe .Sizeof(x)
945
946
947 assert(unsafe.Sizeof(byte(0)) == 1)
948 assert(unsafe.Sizeof(uint8(0)) == 1)
949 assert(unsafe.Sizeof(int8(0)) == 1)
950 assert(unsafe.Sizeof(uint16(0)) == 2)
951 assert(unsafe.Sizeof(int16(0)) == 2)
952 assert(unsafe.Sizeof(uint32(0)) == 4)
953 assert(unsafe.Sizeof(int32(0)) == 4)
954 assert(unsafe.Sizeof(float32(0)) == 4)
955 assert(unsafe.Sizeof(uint64(0)) == 8)
956 assert(unsafe.Sizeof(int64(0)) == 8)
957 assert(unsafe.Sizeof(float64(0)) == 8)
958 assert(unsafe.Sizeof(complex64(0)) == 8)
959 assert(unsafe.Sizeof(complex128(0)) == 16)
960
961 var y0 S0
962 assert(unsafe.Sizeof(y0.a) == 1)
963 assert(unsafe.Sizeof(y0.b) == 4)
964 assert(unsafe.Sizeof(y0.c) == 8)
965 assert(unsafe.Sizeof(y0.d) == 1)
966 assert(unsafe.Sizeof(y0.e) == 16)
967 assert(unsafe.Sizeof(y0) == 40)
968
969 var y1 S1
970 assert(unsafe.Sizeof(y1) == 72)
971
972 var y2 S2
973 assert(unsafe.Sizeof(y2) == 8)
974
975 var y3 S3
976 assert(unsafe.Sizeof(y3) == 16)
977
978 var y4 S4
979 assert(unsafe.Sizeof(y4) == 24)
980
981 var y5 S5
982 assert(unsafe.Sizeof(y5) == 16)
983
984 var a3 [10]S3
985 assert(unsafe.Sizeof(a3) == 160)
986
987
988 type T struct {
989 a int32
990 _ int32
991 c int32
992 }
993 assert(unsafe.Sizeof(T{}) == 12)
994
995 var s []byte
996 _ = unsafe.Sizeof(s)
997 _ = unsafe.Sizeof(s... )
998 }
999
1000 func Sizeof2() {
1001 f1 := func() (x int64) { return }
1002 f2 := func() (x, y int64) { return }
1003 _ = unsafe.Sizeof(f0 ())
1004 assert(unsafe.Sizeof(f1()) == 8)
1005 _ = unsafe.Sizeof(f2())
1006 }
1007
1008 func Slice1() {
1009 var x int
1010 unsafe.Slice()
1011 unsafe.Slice(1, 2, 3)
1012 unsafe.Slice(1 , 2)
1013 unsafe.Slice(nil , 0)
1014 unsafe.Slice(&x, "foo" )
1015 unsafe.Slice(&x, 1.2 )
1016 unsafe.Slice(&x, - 1)
1017 unsafe .Slice(&x, 0)
1018 var _ []byte = unsafe .Slice(&x, 0)
1019
1020 var _ []int = unsafe.Slice(&x, 0)
1021 _ = unsafe.Slice(&x, 1.0)
1022 _ = unsafe.Slice((*int)(nil), 0)
1023 }
1024
1025 func SliceData1() {
1026 var s []int
1027 unsafe.SliceData(0 )
1028 unsafe .SliceData(s)
1029
1030 type S []int
1031 _ = unsafe.SliceData(s)
1032 _ = unsafe.SliceData(S{})
1033 }
1034
1035 func String1() {
1036 var b byte
1037 unsafe.String()
1038 unsafe.String(1, 2, 3)
1039 unsafe.String(1 , 2)
1040 unsafe.String(&b, "foo" )
1041 unsafe.String(&b, 1.2 )
1042 unsafe.String(&b, - 1)
1043 unsafe .String(&b, 0)
1044 var _ []byte = unsafe .String(&b, 0)
1045
1046 var _ string = unsafe.String(&b, 0)
1047 _ = unsafe.String(&b, 1.0)
1048 _ = unsafe.String(nil, 0)
1049 }
1050
1051 func StringData1() {
1052 var s string
1053 type S string
1054 unsafe.StringData(0 )
1055 unsafe.StringData(S ("foo"))
1056 unsafe .StringData(s)
1057
1058 _ = unsafe.StringData(s)
1059 _ = unsafe.StringData("foo")
1060 }
1061
1062
1063 func assert1() {
1064 var x int
1065 assert()
1066 assert(1, 2)
1067 assert("foo" )
1068 assert(x )
1069 assert(true)
1070 assert (false)
1071 _ = assert(true)
1072
1073 var s []byte
1074 assert(s... )
1075 }
1076
1077 func assert2() {
1078 f1 := func() (x bool) { return }
1079 f2 := func() (x bool) { return }
1080 assert(f0 ())
1081 assert(f1 ())
1082 assert(f2 ())
1083 }
1084
1085
1086 func trace1() {
1087
1088
1089
1090
1091
1092 var s []byte
1093 trace(s... )
1094 }
1095
1096 func trace2() {
1097 f1 := func() (x int) { return }
1098 f2 := func() (x int, y string) { return }
1099 f3 := func() (x int, y string, z []int) { return }
1100 _ = f1
1101 _ = f2
1102 _ = f3
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112 }
1113
View as plain text