github.com/aykevl/tinygo@v0.5.0/testdata/structs.go (about) 1 package main 2 3 // TODO: add .ll test files to check the output 4 5 type s0 struct { 6 } 7 8 type s1 struct { 9 a byte 10 } 11 12 type s2 struct { 13 a byte 14 b byte 15 } 16 17 type s3 struct { 18 a byte 19 b byte 20 c byte 21 } 22 23 // should not be expanded 24 type s4 struct { 25 a byte 26 b byte 27 c byte 28 d byte 29 } 30 31 // same struct, different type 32 type s4b struct { 33 a byte 34 b byte 35 c byte 36 d byte 37 } 38 39 type s5 struct { 40 a struct { 41 aa byte 42 ab byte 43 } 44 b byte 45 } 46 47 type s6 struct { 48 a string 49 b byte 50 } 51 52 type s7 struct { 53 a interface{} 54 b byte 55 } 56 57 // should not be expanded 58 type s8 struct { 59 a []byte // 3 elements 60 b byte // 1 element 61 } 62 63 func test0(s s0) { 64 println("test0") 65 } 66 67 func test1(s s1) { 68 println("test1", s.a) 69 } 70 71 func test2(s s2) { 72 println("test2", s.a, s.b) 73 } 74 75 func test3(s s3) { 76 println("test3", s.a, s.b, s.c) 77 } 78 79 func test4(s s4) { 80 println("test4", s.a, s.b, s.c, s.d) 81 test4b(s4b(s)) 82 test4bp((*s4b)(&s)) 83 } 84 85 func test4b(s s4b) { 86 println("test4b", s.a, s.b, s.c, s.d) 87 } 88 89 func test4bp(s *s4b) { 90 println("test4bp", s.a, s.b, s.c, s.d) 91 } 92 93 func test5(s s5) { 94 println("test5", s.a.aa, s.a.ab, s.b) 95 } 96 97 func test6(s s6) { 98 println("test6", s.a, len(s.a), s.b) 99 } 100 101 func test7(s s7) { 102 println("test7", s.a, s.b) 103 } 104 105 func test8(s s8) { 106 println("test8", len(s.a), cap(s.a), s.a[0], s.a[1], s.b) 107 } 108 109 func main() { 110 test0(s0{}) 111 test1(s1{1}) 112 test2(s2{1, 2}) 113 test3(s3{1, 2, 3}) 114 test4(s4{1, 2, 3, 4}) 115 test5(s5{a: struct { 116 aa byte 117 ab byte 118 }{1, 2}, b: 3}) 119 test6(s6{"foo", 5}) 120 test7(s7{a: nil, b: 8}) 121 test8(s8{[]byte{12, 13, 14}[:2], 6}) 122 }