| // Copyright 2014 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. | |
| // This file contains simple golden tests for various examples. | |
| // Besides validating the results when the implementation changes, | |
| // it provides a way to look at the generated code without having | |
| // to execute the print statements in one's head. | |
| package main | |
| import ( | |
| "os" | |
| "path/filepath" | |
| "strings" | |
| "testing" | |
| "golang.org/x/tools/internal/testenv" | |
| ) | |
| // Golden represents a test case. | |
| type Golden struct { | |
| name string | |
| trimPrefix string | |
| lineComment bool | |
| input string // input; the package clause is provided when running the test. | |
| output string // expected output. | |
| } | |
| var golden = []Golden{ | |
| {"day", "", false, day_in, day_out}, | |
| {"offset", "", false, offset_in, offset_out}, | |
| {"gap", "", false, gap_in, gap_out}, | |
| {"num", "", false, num_in, num_out}, | |
| {"unum", "", false, unum_in, unum_out}, | |
| {"unumpos", "", false, unumpos_in, unumpos_out}, | |
| {"prime", "", false, prime_in, prime_out}, | |
| {"prefix", "Type", false, prefix_in, prefix_out}, | |
| {"tokens", "", true, tokens_in, tokens_out}, | |
| {"overflow8", "", false, overflow8_in, overflow8_out}, | |
| } | |
| // Each example starts with "type XXX [u]int", with a single space separating them. | |
| // Simple test: enumeration of type int starting at 0. | |
| const day_in = `type Day int | |
| const ( | |
| Monday Day = iota | |
| Tuesday | |
| Wednesday | |
| Thursday | |
| Friday | |
| Saturday | |
| Sunday | |
| ) | |
| ` | |
| const day_out = `func _() { | |
| // An "invalid array index" compiler error signifies that the constant values have changed. | |
| // Re-run the stringer command to generate them again. | |
| var x [1]struct{} | |
| _ = x[Monday-0] | |
| _ = x[Tuesday-1] | |
| _ = x[Wednesday-2] | |
| _ = x[Thursday-3] | |
| _ = x[Friday-4] | |
| _ = x[Saturday-5] | |
| _ = x[Sunday-6] | |
| } | |
| const _Day_name = "MondayTuesdayWednesdayThursdayFridaySaturdaySunday" | |
| var _Day_index = [...]uint8{0, 6, 13, 22, 30, 36, 44, 50} | |
| func (i Day) String() string { | |
| idx := int(i) - 0 | |
| if i < 0 || idx >= len(_Day_index)-1 { | |
| return "Day(" + strconv.FormatInt(int64(i), 10) + ")" | |
| } | |
| return _Day_name[_Day_index[idx]:_Day_index[idx+1]] | |
| } | |
| ` | |
| // Enumeration with an offset. | |
| // Also includes a duplicate. | |
| const offset_in = `type Number int | |
| const ( | |
| _ Number = iota | |
| One | |
| Two | |
| Three | |
| AnotherOne = One // Duplicate; note that AnotherOne doesn't appear below. | |
| ) | |
| ` | |
| const offset_out = `func _() { | |
| // An "invalid array index" compiler error signifies that the constant values have changed. | |
| // Re-run the stringer command to generate them again. | |
| var x [1]struct{} | |
| _ = x[One-1] | |
| _ = x[Two-2] | |
| _ = x[Three-3] | |
| } | |
| const _Number_name = "OneTwoThree" | |
| var _Number_index = [...]uint8{0, 3, 6, 11} | |
| func (i Number) String() string { | |
| idx := int(i) - 1 | |
| if i < 1 || idx >= len(_Number_index)-1 { | |
| return "Number(" + strconv.FormatInt(int64(i), 10) + ")" | |
| } | |
| return _Number_name[_Number_index[idx]:_Number_index[idx+1]] | |
| } | |
| ` | |
| // Gaps and an offset. | |
| const gap_in = `type Gap int | |
| const ( | |
| Two Gap = 2 | |
| Three Gap = 3 | |
| Five Gap = 5 | |
| Six Gap = 6 | |
| Seven Gap = 7 | |
| Eight Gap = 8 | |
| Nine Gap = 9 | |
| Eleven Gap = 11 | |
| ) | |
| ` | |
| const gap_out = `func _() { | |
| // An "invalid array index" compiler error signifies that the constant values have changed. | |
| // Re-run the stringer command to generate them again. | |
| var x [1]struct{} | |
| _ = x[Two-2] | |
| _ = x[Three-3] | |
| _ = x[Five-5] | |
| _ = x[Six-6] | |
| _ = x[Seven-7] | |
| _ = x[Eight-8] | |
| _ = x[Nine-9] | |
| _ = x[Eleven-11] | |
| } | |
| const ( | |
| _Gap_name_0 = "TwoThree" | |
| _Gap_name_1 = "FiveSixSevenEightNine" | |
| _Gap_name_2 = "Eleven" | |
| ) | |
| var ( | |
| _Gap_index_0 = [...]uint8{0, 3, 8} | |
| _Gap_index_1 = [...]uint8{0, 4, 7, 12, 17, 21} | |
| ) | |
| func (i Gap) String() string { | |
| switch { | |
| case 2 <= i && i <= 3: | |
| i -= 2 | |
| return _Gap_name_0[_Gap_index_0[i]:_Gap_index_0[i+1]] | |
| case 5 <= i && i <= 9: | |
| i -= 5 | |
| return _Gap_name_1[_Gap_index_1[i]:_Gap_index_1[i+1]] | |
| case i == 11: | |
| return _Gap_name_2 | |
| default: | |
| return "Gap(" + strconv.FormatInt(int64(i), 10) + ")" | |
| } | |
| } | |
| ` | |
| // Signed integers spanning zero. | |
| const num_in = `type Num int | |
| const ( | |
| m_2 Num = -2 + iota | |
| m_1 | |
| m0 | |
| m1 | |
| m2 | |
| ) | |
| ` | |
| const num_out = `func _() { | |
| // An "invalid array index" compiler error signifies that the constant values have changed. | |
| // Re-run the stringer command to generate them again. | |
| var x [1]struct{} | |
| _ = x[m_2 - -2] | |
| _ = x[m_1 - -1] | |
| _ = x[m0-0] | |
| _ = x[m1-1] | |
| _ = x[m2-2] | |
| } | |
| const _Num_name = "m_2m_1m0m1m2" | |
| var _Num_index = [...]uint8{0, 3, 6, 8, 10, 12} | |
| func (i Num) String() string { | |
| idx := int(i) - -2 | |
| if i < -2 || idx >= len(_Num_index)-1 { | |
| return "Num(" + strconv.FormatInt(int64(i), 10) + ")" | |
| } | |
| return _Num_name[_Num_index[idx]:_Num_index[idx+1]] | |
| } | |
| ` | |
| // Unsigned integers spanning zero. | |
| const unum_in = `type Unum uint | |
| const ( | |
| m_2 Unum = iota + 253 | |
| m_1 | |
| ) | |
| const ( | |
| m0 Unum = iota | |
| m1 | |
| m2 | |
| ) | |
| ` | |
| const unum_out = `func _() { | |
| // An "invalid array index" compiler error signifies that the constant values have changed. | |
| // Re-run the stringer command to generate them again. | |
| var x [1]struct{} | |
| _ = x[m_2-253] | |
| _ = x[m_1-254] | |
| _ = x[m0-0] | |
| _ = x[m1-1] | |
| _ = x[m2-2] | |
| } | |
| const ( | |
| _Unum_name_0 = "m0m1m2" | |
| _Unum_name_1 = "m_2m_1" | |
| ) | |
| var ( | |
| _Unum_index_0 = [...]uint8{0, 2, 4, 6} | |
| _Unum_index_1 = [...]uint8{0, 3, 6} | |
| ) | |
| func (i Unum) String() string { | |
| switch { | |
| case i <= 2: | |
| return _Unum_name_0[_Unum_index_0[i]:_Unum_index_0[i+1]] | |
| case 253 <= i && i <= 254: | |
| i -= 253 | |
| return _Unum_name_1[_Unum_index_1[i]:_Unum_index_1[i+1]] | |
| default: | |
| return "Unum(" + strconv.FormatInt(int64(i), 10) + ")" | |
| } | |
| } | |
| ` | |
| // Unsigned positive integers. | |
| const unumpos_in = `type Unumpos uint | |
| const ( | |
| m253 Unumpos = iota + 253 | |
| m254 | |
| ) | |
| const ( | |
| m1 Unumpos = iota + 1 | |
| m2 | |
| m3 | |
| ) | |
| ` | |
| const unumpos_out = `func _() { | |
| // An "invalid array index" compiler error signifies that the constant values have changed. | |
| // Re-run the stringer command to generate them again. | |
| var x [1]struct{} | |
| _ = x[m253-253] | |
| _ = x[m254-254] | |
| _ = x[m1-1] | |
| _ = x[m2-2] | |
| _ = x[m3-3] | |
| } | |
| const ( | |
| _Unumpos_name_0 = "m1m2m3" | |
| _Unumpos_name_1 = "m253m254" | |
| ) | |
| var ( | |
| _Unumpos_index_0 = [...]uint8{0, 2, 4, 6} | |
| _Unumpos_index_1 = [...]uint8{0, 4, 8} | |
| ) | |
| func (i Unumpos) String() string { | |
| switch { | |
| case 1 <= i && i <= 3: | |
| i -= 1 | |
| return _Unumpos_name_0[_Unumpos_index_0[i]:_Unumpos_index_0[i+1]] | |
| case 253 <= i && i <= 254: | |
| i -= 253 | |
| return _Unumpos_name_1[_Unumpos_index_1[i]:_Unumpos_index_1[i+1]] | |
| default: | |
| return "Unumpos(" + strconv.FormatInt(int64(i), 10) + ")" | |
| } | |
| } | |
| ` | |
| // Enough gaps to trigger a map implementation of the method. | |
| // Also includes a duplicate to test that it doesn't cause problems | |
| const prime_in = `type Prime int | |
| const ( | |
| p2 Prime = 2 | |
| p3 Prime = 3 | |
| p5 Prime = 5 | |
| p7 Prime = 7 | |
| p77 Prime = 7 // Duplicate; note that p77 doesn't appear below. | |
| p11 Prime = 11 | |
| p13 Prime = 13 | |
| p17 Prime = 17 | |
| p19 Prime = 19 | |
| p23 Prime = 23 | |
| p29 Prime = 29 | |
| p37 Prime = 31 | |
| p41 Prime = 41 | |
| p43 Prime = 43 | |
| ) | |
| ` | |
| const prime_out = `func _() { | |
| // An "invalid array index" compiler error signifies that the constant values have changed. | |
| // Re-run the stringer command to generate them again. | |
| var x [1]struct{} | |
| _ = x[p2-2] | |
| _ = x[p3-3] | |
| _ = x[p5-5] | |
| _ = x[p7-7] | |
| _ = x[p77-7] | |
| _ = x[p11-11] | |
| _ = x[p13-13] | |
| _ = x[p17-17] | |
| _ = x[p19-19] | |
| _ = x[p23-23] | |
| _ = x[p29-29] | |
| _ = x[p37-31] | |
| _ = x[p41-41] | |
| _ = x[p43-43] | |
| } | |
| const _Prime_name = "p2p3p5p7p11p13p17p19p23p29p37p41p43" | |
| var _Prime_map = map[Prime]string{ | |
| 2: _Prime_name[0:2], | |
| 3: _Prime_name[2:4], | |
| 5: _Prime_name[4:6], | |
| 7: _Prime_name[6:8], | |
| 11: _Prime_name[8:11], | |
| 13: _Prime_name[11:14], | |
| 17: _Prime_name[14:17], | |
| 19: _Prime_name[17:20], | |
| 23: _Prime_name[20:23], | |
| 29: _Prime_name[23:26], | |
| 31: _Prime_name[26:29], | |
| 41: _Prime_name[29:32], | |
| 43: _Prime_name[32:35], | |
| } | |
| func (i Prime) String() string { | |
| if str, ok := _Prime_map[i]; ok { | |
| return str | |
| } | |
| return "Prime(" + strconv.FormatInt(int64(i), 10) + ")" | |
| } | |
| ` | |
| const prefix_in = `type Type int | |
| const ( | |
| TypeInt Type = iota | |
| TypeString | |
| TypeFloat | |
| TypeRune | |
| TypeByte | |
| TypeStruct | |
| TypeSlice | |
| ) | |
| ` | |
| const prefix_out = `func _() { | |
| // An "invalid array index" compiler error signifies that the constant values have changed. | |
| // Re-run the stringer command to generate them again. | |
| var x [1]struct{} | |
| _ = x[TypeInt-0] | |
| _ = x[TypeString-1] | |
| _ = x[TypeFloat-2] | |
| _ = x[TypeRune-3] | |
| _ = x[TypeByte-4] | |
| _ = x[TypeStruct-5] | |
| _ = x[TypeSlice-6] | |
| } | |
| const _Type_name = "IntStringFloatRuneByteStructSlice" | |
| var _Type_index = [...]uint8{0, 3, 9, 14, 18, 22, 28, 33} | |
| func (i Type) String() string { | |
| idx := int(i) - 0 | |
| if i < 0 || idx >= len(_Type_index)-1 { | |
| return "Type(" + strconv.FormatInt(int64(i), 10) + ")" | |
| } | |
| return _Type_name[_Type_index[idx]:_Type_index[idx+1]] | |
| } | |
| ` | |
| const tokens_in = `type Token int | |
| const ( | |
| And Token = iota // & | |
| Or // | | |
| Add // + | |
| Sub // - | |
| Ident | |
| Period // . | |
| // not to be used | |
| SingleBefore | |
| // not to be used | |
| BeforeAndInline // inline | |
| InlineGeneral /* inline general */ | |
| ) | |
| ` | |
| const tokens_out = `func _() { | |
| // An "invalid array index" compiler error signifies that the constant values have changed. | |
| // Re-run the stringer command to generate them again. | |
| var x [1]struct{} | |
| _ = x[And-0] | |
| _ = x[Or-1] | |
| _ = x[Add-2] | |
| _ = x[Sub-3] | |
| _ = x[Ident-4] | |
| _ = x[Period-5] | |
| _ = x[SingleBefore-6] | |
| _ = x[BeforeAndInline-7] | |
| _ = x[InlineGeneral-8] | |
| } | |
| const _Token_name = "&|+-Ident.SingleBeforeinlineinline general" | |
| var _Token_index = [...]uint8{0, 1, 2, 3, 4, 9, 10, 22, 28, 42} | |
| func (i Token) String() string { | |
| idx := int(i) - 0 | |
| if i < 0 || idx >= len(_Token_index)-1 { | |
| return "Token(" + strconv.FormatInt(int64(i), 10) + ")" | |
| } | |
| return _Token_name[_Token_index[idx]:_Token_index[idx+1]] | |
| } | |
| ` | |
| const overflow8_in = `type Overflow8 int8 | |
| const ( | |
| O_128 Overflow8 = -128 | |
| O_127 Overflow8 = -127 | |
| O_126 Overflow8 = -126 | |
| O_125 Overflow8 = -125 | |
| O_124 Overflow8 = -124 | |
| O_123 Overflow8 = -123 | |
| O_122 Overflow8 = -122 | |
| O_121 Overflow8 = -121 | |
| O_120 Overflow8 = -120 | |
| O_119 Overflow8 = -119 | |
| O_118 Overflow8 = -118 | |
| O_117 Overflow8 = -117 | |
| O_116 Overflow8 = -116 | |
| O_115 Overflow8 = -115 | |
| O_114 Overflow8 = -114 | |
| O_113 Overflow8 = -113 | |
| O_112 Overflow8 = -112 | |
| O_111 Overflow8 = -111 | |
| O_110 Overflow8 = -110 | |
| O_109 Overflow8 = -109 | |
| O_108 Overflow8 = -108 | |
| O_107 Overflow8 = -107 | |
| O_106 Overflow8 = -106 | |
| O_105 Overflow8 = -105 | |
| O_104 Overflow8 = -104 | |
| O_103 Overflow8 = -103 | |
| O_102 Overflow8 = -102 | |
| O_101 Overflow8 = -101 | |
| O_100 Overflow8 = -100 | |
| O_99 Overflow8 = -99 | |
| O_98 Overflow8 = -98 | |
| O_97 Overflow8 = -97 | |
| O_96 Overflow8 = -96 | |
| O_95 Overflow8 = -95 | |
| O_94 Overflow8 = -94 | |
| O_93 Overflow8 = -93 | |
| O_92 Overflow8 = -92 | |
| O_91 Overflow8 = -91 | |
| O_90 Overflow8 = -90 | |
| O_89 Overflow8 = -89 | |
| O_88 Overflow8 = -88 | |
| O_87 Overflow8 = -87 | |
| O_86 Overflow8 = -86 | |
| O_85 Overflow8 = -85 | |
| O_84 Overflow8 = -84 | |
| O_83 Overflow8 = -83 | |
| O_82 Overflow8 = -82 | |
| O_81 Overflow8 = -81 | |
| O_80 Overflow8 = -80 | |
| O_79 Overflow8 = -79 | |
| O_78 Overflow8 = -78 | |
| O_77 Overflow8 = -77 | |
| O_76 Overflow8 = -76 | |
| O_75 Overflow8 = -75 | |
| O_74 Overflow8 = -74 | |
| O_73 Overflow8 = -73 | |
| O_72 Overflow8 = -72 | |
| O_71 Overflow8 = -71 | |
| O_70 Overflow8 = -70 | |
| O_69 Overflow8 = -69 | |
| O_68 Overflow8 = -68 | |
| O_67 Overflow8 = -67 | |
| O_66 Overflow8 = -66 | |
| O_65 Overflow8 = -65 | |
| O_64 Overflow8 = -64 | |
| O_63 Overflow8 = -63 | |
| O_62 Overflow8 = -62 | |
| O_61 Overflow8 = -61 | |
| O_60 Overflow8 = -60 | |
| O_59 Overflow8 = -59 | |
| O_58 Overflow8 = -58 | |
| O_57 Overflow8 = -57 | |
| O_56 Overflow8 = -56 | |
| O_55 Overflow8 = -55 | |
| O_54 Overflow8 = -54 | |
| O_53 Overflow8 = -53 | |
| O_52 Overflow8 = -52 | |
| O_51 Overflow8 = -51 | |
| O_50 Overflow8 = -50 | |
| O_49 Overflow8 = -49 | |
| O_48 Overflow8 = -48 | |
| O_47 Overflow8 = -47 | |
| O_46 Overflow8 = -46 | |
| O_45 Overflow8 = -45 | |
| O_44 Overflow8 = -44 | |
| O_43 Overflow8 = -43 | |
| O_42 Overflow8 = -42 | |
| O_41 Overflow8 = -41 | |
| O_40 Overflow8 = -40 | |
| O_39 Overflow8 = -39 | |
| O_38 Overflow8 = -38 | |
| O_37 Overflow8 = -37 | |
| O_36 Overflow8 = -36 | |
| O_35 Overflow8 = -35 | |
| O_34 Overflow8 = -34 | |
| O_33 Overflow8 = -33 | |
| O_32 Overflow8 = -32 | |
| O_31 Overflow8 = -31 | |
| O_30 Overflow8 = -30 | |
| O_29 Overflow8 = -29 | |
| O_28 Overflow8 = -28 | |
| O_27 Overflow8 = -27 | |
| O_26 Overflow8 = -26 | |
| O_25 Overflow8 = -25 | |
| O_24 Overflow8 = -24 | |
| O_23 Overflow8 = -23 | |
| O_22 Overflow8 = -22 | |
| O_21 Overflow8 = -21 | |
| O_20 Overflow8 = -20 | |
| O_19 Overflow8 = -19 | |
| O_18 Overflow8 = -18 | |
| O_17 Overflow8 = -17 | |
| O_16 Overflow8 = -16 | |
| O_15 Overflow8 = -15 | |
| O_14 Overflow8 = -14 | |
| O_13 Overflow8 = -13 | |
| O_12 Overflow8 = -12 | |
| O_11 Overflow8 = -11 | |
| O_10 Overflow8 = -10 | |
| O_9 Overflow8 = -9 | |
| O_8 Overflow8 = -8 | |
| O_7 Overflow8 = -7 | |
| O_6 Overflow8 = -6 | |
| O_5 Overflow8 = -5 | |
| O_4 Overflow8 = -4 | |
| O_3 Overflow8 = -3 | |
| O_2 Overflow8 = -2 | |
| O_1 Overflow8 = -1 | |
| O0 Overflow8 = 0 | |
| O1 Overflow8 = 1 | |
| O2 Overflow8 = 2 | |
| O3 Overflow8 = 3 | |
| O4 Overflow8 = 4 | |
| O5 Overflow8 = 5 | |
| O6 Overflow8 = 6 | |
| O7 Overflow8 = 7 | |
| O8 Overflow8 = 8 | |
| O9 Overflow8 = 9 | |
| O10 Overflow8 = 10 | |
| O11 Overflow8 = 11 | |
| O12 Overflow8 = 12 | |
| O13 Overflow8 = 13 | |
| O14 Overflow8 = 14 | |
| O15 Overflow8 = 15 | |
| O16 Overflow8 = 16 | |
| O17 Overflow8 = 17 | |
| O18 Overflow8 = 18 | |
| O19 Overflow8 = 19 | |
| O20 Overflow8 = 20 | |
| O21 Overflow8 = 21 | |
| O22 Overflow8 = 22 | |
| O23 Overflow8 = 23 | |
| O24 Overflow8 = 24 | |
| O25 Overflow8 = 25 | |
| O26 Overflow8 = 26 | |
| O27 Overflow8 = 27 | |
| O28 Overflow8 = 28 | |
| O29 Overflow8 = 29 | |
| O30 Overflow8 = 30 | |
| O31 Overflow8 = 31 | |
| O32 Overflow8 = 32 | |
| O33 Overflow8 = 33 | |
| O34 Overflow8 = 34 | |
| O35 Overflow8 = 35 | |
| O36 Overflow8 = 36 | |
| O37 Overflow8 = 37 | |
| O38 Overflow8 = 38 | |
| O39 Overflow8 = 39 | |
| O40 Overflow8 = 40 | |
| O41 Overflow8 = 41 | |
| O42 Overflow8 = 42 | |
| O43 Overflow8 = 43 | |
| O44 Overflow8 = 44 | |
| O45 Overflow8 = 45 | |
| O46 Overflow8 = 46 | |
| O47 Overflow8 = 47 | |
| O48 Overflow8 = 48 | |
| O49 Overflow8 = 49 | |
| O50 Overflow8 = 50 | |
| O51 Overflow8 = 51 | |
| O52 Overflow8 = 52 | |
| O53 Overflow8 = 53 | |
| O54 Overflow8 = 54 | |
| O55 Overflow8 = 55 | |
| O56 Overflow8 = 56 | |
| O57 Overflow8 = 57 | |
| O58 Overflow8 = 58 | |
| O59 Overflow8 = 59 | |
| O60 Overflow8 = 60 | |
| O61 Overflow8 = 61 | |
| O62 Overflow8 = 62 | |
| O63 Overflow8 = 63 | |
| O64 Overflow8 = 64 | |
| O65 Overflow8 = 65 | |
| O66 Overflow8 = 66 | |
| O67 Overflow8 = 67 | |
| O68 Overflow8 = 68 | |
| O69 Overflow8 = 69 | |
| O70 Overflow8 = 70 | |
| O71 Overflow8 = 71 | |
| O72 Overflow8 = 72 | |
| O73 Overflow8 = 73 | |
| O74 Overflow8 = 74 | |
| O75 Overflow8 = 75 | |
| O76 Overflow8 = 76 | |
| O77 Overflow8 = 77 | |
| O78 Overflow8 = 78 | |
| O79 Overflow8 = 79 | |
| O80 Overflow8 = 80 | |
| O81 Overflow8 = 81 | |
| O82 Overflow8 = 82 | |
| O83 Overflow8 = 83 | |
| O84 Overflow8 = 84 | |
| O85 Overflow8 = 85 | |
| O86 Overflow8 = 86 | |
| O87 Overflow8 = 87 | |
| O88 Overflow8 = 88 | |
| O89 Overflow8 = 89 | |
| O90 Overflow8 = 90 | |
| O91 Overflow8 = 91 | |
| O92 Overflow8 = 92 | |
| O93 Overflow8 = 93 | |
| O94 Overflow8 = 94 | |
| O95 Overflow8 = 95 | |
| O96 Overflow8 = 96 | |
| O97 Overflow8 = 97 | |
| O98 Overflow8 = 98 | |
| O99 Overflow8 = 99 | |
| O100 Overflow8 = 100 | |
| O101 Overflow8 = 101 | |
| O102 Overflow8 = 102 | |
| O103 Overflow8 = 103 | |
| O104 Overflow8 = 104 | |
| O105 Overflow8 = 105 | |
| O106 Overflow8 = 106 | |
| O107 Overflow8 = 107 | |
| O108 Overflow8 = 108 | |
| O109 Overflow8 = 109 | |
| O110 Overflow8 = 110 | |
| O111 Overflow8 = 111 | |
| O112 Overflow8 = 112 | |
| O113 Overflow8 = 113 | |
| O114 Overflow8 = 114 | |
| O115 Overflow8 = 115 | |
| O116 Overflow8 = 116 | |
| O117 Overflow8 = 117 | |
| O118 Overflow8 = 118 | |
| O119 Overflow8 = 119 | |
| O120 Overflow8 = 120 | |
| O121 Overflow8 = 121 | |
| O122 Overflow8 = 122 | |
| O123 Overflow8 = 123 | |
| O124 Overflow8 = 124 | |
| O125 Overflow8 = 125 | |
| O126 Overflow8 = 126 | |
| O127 Overflow8 = 127 | |
| ) | |
| ` | |
| const overflow8_out = `func _() { | |
| // An "invalid array index" compiler error signifies that the constant values have changed. | |
| // Re-run the stringer command to generate them again. | |
| var x [1]struct{} | |
| _ = x[O_128 - -128] | |
| _ = x[O_127 - -127] | |
| _ = x[O_126 - -126] | |
| _ = x[O_125 - -125] | |
| _ = x[O_124 - -124] | |
| _ = x[O_123 - -123] | |
| _ = x[O_122 - -122] | |
| _ = x[O_121 - -121] | |
| _ = x[O_120 - -120] | |
| _ = x[O_119 - -119] | |
| _ = x[O_118 - -118] | |
| _ = x[O_117 - -117] | |
| _ = x[O_116 - -116] | |
| _ = x[O_115 - -115] | |
| _ = x[O_114 - -114] | |
| _ = x[O_113 - -113] | |
| _ = x[O_112 - -112] | |
| _ = x[O_111 - -111] | |
| _ = x[O_110 - -110] | |
| _ = x[O_109 - -109] | |
| _ = x[O_108 - -108] | |
| _ = x[O_107 - -107] | |
| _ = x[O_106 - -106] | |
| _ = x[O_105 - -105] | |
| _ = x[O_104 - -104] | |
| _ = x[O_103 - -103] | |
| _ = x[O_102 - -102] | |
| _ = x[O_101 - -101] | |
| _ = x[O_100 - -100] | |
| _ = x[O_99 - -99] | |
| _ = x[O_98 - -98] | |
| _ = x[O_97 - -97] | |
| _ = x[O_96 - -96] | |
| _ = x[O_95 - -95] | |
| _ = x[O_94 - -94] | |
| _ = x[O_93 - -93] | |
| _ = x[O_92 - -92] | |
| _ = x[O_91 - -91] | |
| _ = x[O_90 - -90] | |
| _ = x[O_89 - -89] | |
| _ = x[O_88 - -88] | |
| _ = x[O_87 - -87] | |
| _ = x[O_86 - -86] | |
| _ = x[O_85 - -85] | |
| _ = x[O_84 - -84] | |
| _ = x[O_83 - -83] | |
| _ = x[O_82 - -82] | |
| _ = x[O_81 - -81] | |
| _ = x[O_80 - -80] | |
| _ = x[O_79 - -79] | |
| _ = x[O_78 - -78] | |
| _ = x[O_77 - -77] | |
| _ = x[O_76 - -76] | |
| _ = x[O_75 - -75] | |
| _ = x[O_74 - -74] | |
| _ = x[O_73 - -73] | |
| _ = x[O_72 - -72] | |
| _ = x[O_71 - -71] | |
| _ = x[O_70 - -70] | |
| _ = x[O_69 - -69] | |
| _ = x[O_68 - -68] | |
| _ = x[O_67 - -67] | |
| _ = x[O_66 - -66] | |
| _ = x[O_65 - -65] | |
| _ = x[O_64 - -64] | |
| _ = x[O_63 - -63] | |
| _ = x[O_62 - -62] | |
| _ = x[O_61 - -61] | |
| _ = x[O_60 - -60] | |
| _ = x[O_59 - -59] | |
| _ = x[O_58 - -58] | |
| _ = x[O_57 - -57] | |
| _ = x[O_56 - -56] | |
| _ = x[O_55 - -55] | |
| _ = x[O_54 - -54] | |
| _ = x[O_53 - -53] | |
| _ = x[O_52 - -52] | |
| _ = x[O_51 - -51] | |
| _ = x[O_50 - -50] | |
| _ = x[O_49 - -49] | |
| _ = x[O_48 - -48] | |
| _ = x[O_47 - -47] | |
| _ = x[O_46 - -46] | |
| _ = x[O_45 - -45] | |
| _ = x[O_44 - -44] | |
| _ = x[O_43 - -43] | |
| _ = x[O_42 - -42] | |
| _ = x[O_41 - -41] | |
| _ = x[O_40 - -40] | |
| _ = x[O_39 - -39] | |
| _ = x[O_38 - -38] | |
| _ = x[O_37 - -37] | |
| _ = x[O_36 - -36] | |
| _ = x[O_35 - -35] | |
| _ = x[O_34 - -34] | |
| _ = x[O_33 - -33] | |
| _ = x[O_32 - -32] | |
| _ = x[O_31 - -31] | |
| _ = x[O_30 - -30] | |
| _ = x[O_29 - -29] | |
| _ = x[O_28 - -28] | |
| _ = x[O_27 - -27] | |
| _ = x[O_26 - -26] | |
| _ = x[O_25 - -25] | |
| _ = x[O_24 - -24] | |
| _ = x[O_23 - -23] | |
| _ = x[O_22 - -22] | |
| _ = x[O_21 - -21] | |
| _ = x[O_20 - -20] | |
| _ = x[O_19 - -19] | |
| _ = x[O_18 - -18] | |
| _ = x[O_17 - -17] | |
| _ = x[O_16 - -16] | |
| _ = x[O_15 - -15] | |
| _ = x[O_14 - -14] | |
| _ = x[O_13 - -13] | |
| _ = x[O_12 - -12] | |
| _ = x[O_11 - -11] | |
| _ = x[O_10 - -10] | |
| _ = x[O_9 - -9] | |
| _ = x[O_8 - -8] | |
| _ = x[O_7 - -7] | |
| _ = x[O_6 - -6] | |
| _ = x[O_5 - -5] | |
| _ = x[O_4 - -4] | |
| _ = x[O_3 - -3] | |
| _ = x[O_2 - -2] | |
| _ = x[O_1 - -1] | |
| _ = x[O0-0] | |
| _ = x[O1-1] | |
| _ = x[O2-2] | |
| _ = x[O3-3] | |
| _ = x[O4-4] | |
| _ = x[O5-5] | |
| _ = x[O6-6] | |
| _ = x[O7-7] | |
| _ = x[O8-8] | |
| _ = x[O9-9] | |
| _ = x[O10-10] | |
| _ = x[O11-11] | |
| _ = x[O12-12] | |
| _ = x[O13-13] | |
| _ = x[O14-14] | |
| _ = x[O15-15] | |
| _ = x[O16-16] | |
| _ = x[O17-17] | |
| _ = x[O18-18] | |
| _ = x[O19-19] | |
| _ = x[O20-20] | |
| _ = x[O21-21] | |
| _ = x[O22-22] | |
| _ = x[O23-23] | |
| _ = x[O24-24] | |
| _ = x[O25-25] | |
| _ = x[O26-26] | |
| _ = x[O27-27] | |
| _ = x[O28-28] | |
| _ = x[O29-29] | |
| _ = x[O30-30] | |
| _ = x[O31-31] | |
| _ = x[O32-32] | |
| _ = x[O33-33] | |
| _ = x[O34-34] | |
| _ = x[O35-35] | |
| _ = x[O36-36] | |
| _ = x[O37-37] | |
| _ = x[O38-38] | |
| _ = x[O39-39] | |
| _ = x[O40-40] | |
| _ = x[O41-41] | |
| _ = x[O42-42] | |
| _ = x[O43-43] | |
| _ = x[O44-44] | |
| _ = x[O45-45] | |
| _ = x[O46-46] | |
| _ = x[O47-47] | |
| _ = x[O48-48] | |
| _ = x[O49-49] | |
| _ = x[O50-50] | |
| _ = x[O51-51] | |
| _ = x[O52-52] | |
| _ = x[O53-53] | |
| _ = x[O54-54] | |
| _ = x[O55-55] | |
| _ = x[O56-56] | |
| _ = x[O57-57] | |
| _ = x[O58-58] | |
| _ = x[O59-59] | |
| _ = x[O60-60] | |
| _ = x[O61-61] | |
| _ = x[O62-62] | |
| _ = x[O63-63] | |
| _ = x[O64-64] | |
| _ = x[O65-65] | |
| _ = x[O66-66] | |
| _ = x[O67-67] | |
| _ = x[O68-68] | |
| _ = x[O69-69] | |
| _ = x[O70-70] | |
| _ = x[O71-71] | |
| _ = x[O72-72] | |
| _ = x[O73-73] | |
| _ = x[O74-74] | |
| _ = x[O75-75] | |
| _ = x[O76-76] | |
| _ = x[O77-77] | |
| _ = x[O78-78] | |
| _ = x[O79-79] | |
| _ = x[O80-80] | |
| _ = x[O81-81] | |
| _ = x[O82-82] | |
| _ = x[O83-83] | |
| _ = x[O84-84] | |
| _ = x[O85-85] | |
| _ = x[O86-86] | |
| _ = x[O87-87] | |
| _ = x[O88-88] | |
| _ = x[O89-89] | |
| _ = x[O90-90] | |
| _ = x[O91-91] | |
| _ = x[O92-92] | |
| _ = x[O93-93] | |
| _ = x[O94-94] | |
| _ = x[O95-95] | |
| _ = x[O96-96] | |
| _ = x[O97-97] | |
| _ = x[O98-98] | |
| _ = x[O99-99] | |
| _ = x[O100-100] | |
| _ = x[O101-101] | |
| _ = x[O102-102] | |
| _ = x[O103-103] | |
| _ = x[O104-104] | |
| _ = x[O105-105] | |
| _ = x[O106-106] | |
| _ = x[O107-107] | |
| _ = x[O108-108] | |
| _ = x[O109-109] | |
| _ = x[O110-110] | |
| _ = x[O111-111] | |
| _ = x[O112-112] | |
| _ = x[O113-113] | |
| _ = x[O114-114] | |
| _ = x[O115-115] | |
| _ = x[O116-116] | |
| _ = x[O117-117] | |
| _ = x[O118-118] | |
| _ = x[O119-119] | |
| _ = x[O120-120] | |
| _ = x[O121-121] | |
| _ = x[O122-122] | |
| _ = x[O123-123] | |
| _ = x[O124-124] | |
| _ = x[O125-125] | |
| _ = x[O126-126] | |
| _ = x[O127-127] | |
| } | |
| const _Overflow8_name = "O_128O_127O_126O_125O_124O_123O_122O_121O_120O_119O_118O_117O_116O_115O_114O_113O_112O_111O_110O_109O_108O_107O_106O_105O_104O_103O_102O_101O_100O_99O_98O_97O_96O_95O_94O_93O_92O_91O_90O_89O_88O_87O_86O_85O_84O_83O_82O_81O_80O_79O_78O_77O_76O_75O_74O_73O_72O_71O_70O_69O_68O_67O_66O_65O_64O_63O_62O_61O_60O_59O_58O_57O_56O_55O_54O_53O_52O_51O_50O_49O_48O_47O_46O_45O_44O_43O_42O_41O_40O_39O_38O_37O_36O_35O_34O_33O_32O_31O_30O_29O_28O_27O_26O_25O_24O_23O_22O_21O_20O_19O_18O_17O_16O_15O_14O_13O_12O_11O_10O_9O_8O_7O_6O_5O_4O_3O_2O_1O0O1O2O3O4O5O6O7O8O9O10O11O12O13O14O15O16O17O18O19O20O21O22O23O24O25O26O27O28O29O30O31O32O33O34O35O36O37O38O39O40O41O42O43O44O45O46O47O48O49O50O51O52O53O54O55O56O57O58O59O60O61O62O63O64O65O66O67O68O69O70O71O72O73O74O75O76O77O78O79O80O81O82O83O84O85O86O87O88O89O90O91O92O93O94O95O96O97O98O99O100O101O102O103O104O105O106O107O108O109O110O111O112O113O114O115O116O117O118O119O120O121O122O123O124O125O126O127" | |
| var _Overflow8_index = [...]uint16{0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 233, 237, 241, 245, 249, 253, 257, 261, 265, 269, 273, 277, 281, 285, 289, 293, 297, 301, 305, 309, 313, 317, 321, 325, 329, 333, 337, 341, 345, 349, 353, 357, 361, 365, 369, 373, 377, 381, 385, 389, 393, 397, 401, 405, 409, 413, 417, 421, 425, 429, 433, 437, 441, 445, 449, 453, 457, 461, 465, 469, 473, 477, 481, 485, 489, 493, 497, 501, 505, 508, 511, 514, 517, 520, 523, 526, 529, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 555, 558, 561, 564, 567, 570, 573, 576, 579, 582, 585, 588, 591, 594, 597, 600, 603, 606, 609, 612, 615, 618, 621, 624, 627, 630, 633, 636, 639, 642, 645, 648, 651, 654, 657, 660, 663, 666, 669, 672, 675, 678, 681, 684, 687, 690, 693, 696, 699, 702, 705, 708, 711, 714, 717, 720, 723, 726, 729, 732, 735, 738, 741, 744, 747, 750, 753, 756, 759, 762, 765, 768, 771, 774, 777, 780, 783, 786, 789, 792, 795, 798, 801, 804, 807, 810, 813, 816, 819, 822, 826, 830, 834, 838, 842, 846, 850, 854, 858, 862, 866, 870, 874, 878, 882, 886, 890, 894, 898, 902, 906, 910, 914, 918, 922, 926, 930, 934} | |
| func (i Overflow8) String() string { | |
| idx := int(i) - -128 | |
| if i < -128 || idx >= len(_Overflow8_index)-1 { | |
| return "Overflow8(" + strconv.FormatInt(int64(i), 10) + ")" | |
| } | |
| return _Overflow8_name[_Overflow8_index[idx]:_Overflow8_index[idx+1]] | |
| } | |
| ` | |
| func TestGolden(t *testing.T) { | |
| testenv.NeedsTool(t, "go") | |
| dir := t.TempDir() | |
| for _, test := range golden { | |
| t.Run(test.name, func(t *testing.T) { | |
| input := "package test\n" + test.input | |
| file := test.name + ".go" | |
| absFile := filepath.Join(dir, file) | |
| err := os.WriteFile(absFile, []byte(input), 0644) | |
| if err != nil { | |
| t.Fatal(err) | |
| } | |
| pkgs := loadPackages([]string{absFile}, nil, test.trimPrefix, test.lineComment, t.Logf) | |
| if len(pkgs) != 1 { | |
| t.Fatalf("got %d parsed packages but expected 1", len(pkgs)) | |
| } | |
| // Extract the name and type of the constant from the first line. | |
| tokens := strings.SplitN(test.input, " ", 3) | |
| if len(tokens) != 3 { | |
| t.Fatalf("%s: need type declaration on first line", test.name) | |
| } | |
| g := Generator{ | |
| pkg: pkgs[0], | |
| logf: t.Logf, | |
| } | |
| g.generate(tokens[1], findValues(tokens[1], pkgs[0])) | |
| got := string(g.format()) | |
| if got != test.output { | |
| t.Errorf("%s: got(%d)\n====\n%q====\nexpected(%d)\n====\n%q", test.name, len(got), got, len(test.output), test.output) | |
| } | |
| }) | |
| } | |
| } |