1
2
3
4
5
6
7
8
9
10 package main
11
12 import (
13 "fmt"
14 "strings"
15 )
16
17 const template = `
18 func CheckEqNNN_TTT() {
19 onesA := [NNN]ttt{ONES}
20 onesB := [NNN]ttt{ONES}
21 twos := [NNN]ttt{TWOS}
22 if onesA != onesB {
23 println("onesA != onesB in CheckEqNNN_TTT")
24 }
25 if onesA == twos {
26 println("onesA == twos in CheckEqNNN_TTT")
27 }
28 if onesB == twos {
29 println("onesB == twos in CheckEqNNN_TTT")
30 }
31 if s := fmt.Sprint(onesA == onesB, onesA != twos, onesB != twos); s != "true true true" {
32 println("fail in CheckEqNNN_TTT:", s)
33 }
34 }
35
36 func CheckEqNNN_TTTExtraVar() {
37 onesA := [NNN]ttt{ONES}
38 onesB := [NNN]ttt{ONES}
39 twos := [NNN]ttt{TWOS}
40 onesX := onesA
41 if onesA != onesB {
42 println("onesA != onesB in CheckEqNNN_TTTExtraVar")
43 }
44 if onesA == twos {
45 println("onesA == twos in CheckEqNNN_TTTExtraVar")
46 }
47 if onesB == twos {
48 println("onesB == twos in CheckEqNNN_TTTExtraVar")
49 }
50 if s := fmt.Sprint(onesA == onesB, onesA != twos, onesB != twos); s != "true true true" {
51 println("fail in CheckEqNNN_TTTExtraVar:", s)
52 }
53 if s := fmt.Sprint(onesB == onesX); s != "true" {
54 println("extra var fail in CheckEqNNN_TTTExtraVar")
55 }
56 }
57 `
58
59 func main() {
60 fmt.Print("// run\n\n")
61 fmt.Print("// THIS FILE IS AUTO-GENERATED\n\n")
62 fmt.Print("package main\n\n")
63 fmt.Println(`import "fmt"`)
64
65 types := []string{
66 "int", "int8", "int16", "int32", "int64",
67 "uint", "uint8", "uint16", "uint32", "uint64",
68 "float32", "float64"}
69 tocall := make([]string, 0, 32*len(types))
70 for i := 1; i <= 32; i++ {
71 for _, typ := range types {
72 src := template
73 src = strings.Replace(src, "NNN", fmt.Sprint(i), -1)
74 src = strings.Replace(src, "TTT", strings.Title(typ), -1)
75 src = strings.Replace(src, "ttt", typ, -1)
76 src = strings.Replace(src, "ONES", "1"+strings.Repeat(", 1", i-1), -1)
77 src = strings.Replace(src, "TWOS", "2"+strings.Repeat(", 2", i-1), -1)
78 fmt.Print(src)
79 tocall = append(tocall, fmt.Sprintf("CheckEq%d_%s", i, strings.Title(typ)))
80 }
81 }
82 fmt.Println("func main() {")
83 for _, fun := range tocall {
84 fmt.Printf("\t%s()\n", fun)
85 fmt.Printf("\t%sExtraVar()\n", fun)
86 }
87 fmt.Println("}")
88 }
89
View as plain text