Source file
test/codegen/shape_assert.go
1
2
3
4
5
6
7
8
9
10 package codegen
11
12
13
14 func switchStringOrBytes[S string | []byte](x S) string {
15 switch any(x).(type) {
16 case string:
17 return "string"
18 case []byte:
19 return "[]byte"
20 }
21 return ""
22 }
23
24
25
26 func SwitchStringInst(x string) string {
27
28 return switchStringOrBytes(x)
29 }
30
31
32
33 func SwitchBytesInst(x []byte) string {
34
35 return switchStringOrBytes(x)
36 }
37
38
39
40 func commaOkString[S string | []byte](x S) (string, bool) {
41 v, ok := any(x).(string)
42 return v, ok
43 }
44
45
46
47 func CommaOkStringBytesInst(x []byte) (string, bool) {
48
49 return commaOkString(x)
50 }
51
52
53
54 func CommaOkStringStringInst(x string) (string, bool) {
55
56 return commaOkString(x)
57 }
58
59
60
61 func commaOkViaVar[S string | []byte](x S) (string, bool) {
62 iface := any(x)
63 v, ok := iface.(string)
64 return v, ok
65 }
66
67 func CommaOkViaVarBytesInst(x []byte) (string, bool) {
68
69 return commaOkViaVar(x)
70 }
71
72
73
74 func switchViaVar[S string | []byte](x S) string {
75 iface := any(x)
76 switch iface.(type) {
77 case string:
78 return "string"
79 case []byte:
80 return "[]byte"
81 }
82 return ""
83 }
84
85 func SwitchViaVarStringInst(x string) string {
86
87 return switchViaVar(x)
88 }
89
90 func SwitchViaVarBytesInst(x []byte) string {
91
92 return switchViaVar(x)
93 }
94
95
96
97 func switchFallsToDefault[S string | []byte | int](x S) string {
98 switch any(x).(type) {
99 case string:
100 return "string"
101 case []byte:
102 return "[]byte"
103 }
104 return "other"
105 }
106
107
108 func SwitchFallsToDefaultIntInst(x int) string {
109
110
111 return switchFallsToDefault(x)
112 }
113
View as plain text