File tree Expand file tree Collapse file tree 5 files changed +546
-5
lines changed
tests/ui/derive/tokenizable
types/contracts/enum_as_input/src Expand file tree Collapse file tree 5 files changed +546
-5
lines changed Original file line number Diff line number Diff line change @@ -60,10 +60,10 @@ pub(crate) fn extract_variants(
6060 contents : impl IntoIterator < Item = Variant > ,
6161 fuels_core_path : TokenStream ,
6262) -> Result < ExtractedVariants > {
63- let mut discriminant = 0 ;
6463 let variants = contents
6564 . into_iter ( )
66- . map ( |variant| -> Result < _ > {
65+ . enumerate ( )
66+ . map ( |( discriminant, variant) | -> Result < _ > {
6767 let is_unit = matches ! ( variant. fields, Fields :: Unit ) ;
6868 if has_ignore_attr ( & variant. attrs ) {
6969 Ok ( ExtractedVariant :: Ignored {
@@ -75,15 +75,16 @@ pub(crate) fn extract_variants(
7575 } else {
7676 validate_variant_type ( & variant) ?;
7777
78- let current_discriminant = discriminant;
79- discriminant += 1 ;
78+ let discriminant = discriminant. try_into ( ) . map_err ( |_| {
79+ Error :: new_spanned ( & variant. ident , "Enums can not have more than 256 variants" )
80+ } ) ?;
8081
8182 Ok ( ExtractedVariant :: Normal {
8283 info : VariantInfo {
8384 name : variant. ident ,
8485 is_unit,
8586 } ,
86- discriminant : current_discriminant ,
87+ discriminant,
8788 } )
8889 }
8990 } )
Original file line number Diff line number Diff line change 1+ use fuels_macros:: Tokenizable ;
2+
3+ #[ derive( Tokenizable ) ]
4+ enum MaxedOutVariantsEnum {
5+ Variant0 ( u8 ) ,
6+ Variant1 ( u8 ) ,
7+ Variant2 ( u8 ) ,
8+ Variant3 ( u8 ) ,
9+ Variant4 ( u8 ) ,
10+ Variant5 ( u8 ) ,
11+ Variant6 ( u8 ) ,
12+ Variant7 ( u8 ) ,
13+ Variant8 ( u8 ) ,
14+ Variant9 ( u8 ) ,
15+ Variant10 ( u8 ) ,
16+ Variant11 ( u8 ) ,
17+ Variant12 ( u8 ) ,
18+ Variant13 ( u8 ) ,
19+ Variant14 ( u8 ) ,
20+ Variant15 ( u8 ) ,
21+ Variant16 ( u8 ) ,
22+ Variant17 ( u8 ) ,
23+ Variant18 ( u8 ) ,
24+ Variant19 ( u8 ) ,
25+ Variant20 ( u8 ) ,
26+ Variant21 ( u8 ) ,
27+ Variant22 ( u8 ) ,
28+ Variant23 ( u8 ) ,
29+ Variant24 ( u8 ) ,
30+ Variant25 ( u8 ) ,
31+ Variant26 ( u8 ) ,
32+ Variant27 ( u8 ) ,
33+ Variant28 ( u8 ) ,
34+ Variant29 ( u8 ) ,
35+ Variant30 ( u8 ) ,
36+ Variant31 ( u8 ) ,
37+ Variant32 ( u8 ) ,
38+ Variant33 ( u8 ) ,
39+ Variant34 ( u8 ) ,
40+ Variant35 ( u8 ) ,
41+ Variant36 ( u8 ) ,
42+ Variant37 ( u8 ) ,
43+ Variant38 ( u8 ) ,
44+ Variant39 ( u8 ) ,
45+ Variant40 ( u8 ) ,
46+ Variant41 ( u8 ) ,
47+ Variant42 ( u8 ) ,
48+ Variant43 ( u8 ) ,
49+ Variant44 ( u8 ) ,
50+ Variant45 ( u8 ) ,
51+ Variant46 ( u8 ) ,
52+ Variant47 ( u8 ) ,
53+ Variant48 ( u8 ) ,
54+ Variant49 ( u8 ) ,
55+ Variant50 ( u8 ) ,
56+ Variant51 ( u8 ) ,
57+ Variant52 ( u8 ) ,
58+ Variant53 ( u8 ) ,
59+ Variant54 ( u8 ) ,
60+ Variant55 ( u8 ) ,
61+ Variant56 ( u8 ) ,
62+ Variant57 ( u8 ) ,
63+ Variant58 ( u8 ) ,
64+ Variant59 ( u8 ) ,
65+ Variant60 ( u8 ) ,
66+ Variant61 ( u8 ) ,
67+ Variant62 ( u8 ) ,
68+ Variant63 ( u8 ) ,
69+ Variant64 ( u8 ) ,
70+ Variant65 ( u8 ) ,
71+ Variant66 ( u8 ) ,
72+ Variant67 ( u8 ) ,
73+ Variant68 ( u8 ) ,
74+ Variant69 ( u8 ) ,
75+ Variant70 ( u8 ) ,
76+ Variant71 ( u8 ) ,
77+ Variant72 ( u8 ) ,
78+ Variant73 ( u8 ) ,
79+ Variant74 ( u8 ) ,
80+ Variant75 ( u8 ) ,
81+ Variant76 ( u8 ) ,
82+ Variant77 ( u8 ) ,
83+ Variant78 ( u8 ) ,
84+ Variant79 ( u8 ) ,
85+ Variant80 ( u8 ) ,
86+ Variant81 ( u8 ) ,
87+ Variant82 ( u8 ) ,
88+ Variant83 ( u8 ) ,
89+ Variant84 ( u8 ) ,
90+ Variant85 ( u8 ) ,
91+ Variant86 ( u8 ) ,
92+ Variant87 ( u8 ) ,
93+ Variant88 ( u8 ) ,
94+ Variant89 ( u8 ) ,
95+ Variant90 ( u8 ) ,
96+ Variant91 ( u8 ) ,
97+ Variant92 ( u8 ) ,
98+ Variant93 ( u8 ) ,
99+ Variant94 ( u8 ) ,
100+ Variant95 ( u8 ) ,
101+ Variant96 ( u8 ) ,
102+ Variant97 ( u8 ) ,
103+ Variant98 ( u8 ) ,
104+ Variant99 ( u8 ) ,
105+ Variant100 ( u8 ) ,
106+ Variant101 ( u8 ) ,
107+ Variant102 ( u8 ) ,
108+ Variant103 ( u8 ) ,
109+ Variant104 ( u8 ) ,
110+ Variant105 ( u8 ) ,
111+ Variant106 ( u8 ) ,
112+ Variant107 ( u8 ) ,
113+ Variant108 ( u8 ) ,
114+ Variant109 ( u8 ) ,
115+ Variant110 ( u8 ) ,
116+ Variant111 ( u8 ) ,
117+ Variant112 ( u8 ) ,
118+ Variant113 ( u8 ) ,
119+ Variant114 ( u8 ) ,
120+ Variant115 ( u8 ) ,
121+ Variant116 ( u8 ) ,
122+ Variant117 ( u8 ) ,
123+ Variant118 ( u8 ) ,
124+ Variant119 ( u8 ) ,
125+ Variant120 ( u8 ) ,
126+ Variant121 ( u8 ) ,
127+ Variant122 ( u8 ) ,
128+ Variant123 ( u8 ) ,
129+ Variant124 ( u8 ) ,
130+ Variant125 ( u8 ) ,
131+ Variant126 ( u8 ) ,
132+ Variant127 ( u8 ) ,
133+ Variant128 ( u8 ) ,
134+ Variant129 ( u8 ) ,
135+ Variant130 ( u8 ) ,
136+ Variant131 ( u8 ) ,
137+ Variant132 ( u8 ) ,
138+ Variant133 ( u8 ) ,
139+ Variant134 ( u8 ) ,
140+ Variant135 ( u8 ) ,
141+ Variant136 ( u8 ) ,
142+ Variant137 ( u8 ) ,
143+ Variant138 ( u8 ) ,
144+ Variant139 ( u8 ) ,
145+ Variant140 ( u8 ) ,
146+ Variant141 ( u8 ) ,
147+ Variant142 ( u8 ) ,
148+ Variant143 ( u8 ) ,
149+ Variant144 ( u8 ) ,
150+ Variant145 ( u8 ) ,
151+ Variant146 ( u8 ) ,
152+ Variant147 ( u8 ) ,
153+ Variant148 ( u8 ) ,
154+ Variant149 ( u8 ) ,
155+ Variant150 ( u8 ) ,
156+ Variant151 ( u8 ) ,
157+ Variant152 ( u8 ) ,
158+ Variant153 ( u8 ) ,
159+ Variant154 ( u8 ) ,
160+ Variant155 ( u8 ) ,
161+ Variant156 ( u8 ) ,
162+ Variant157 ( u8 ) ,
163+ Variant158 ( u8 ) ,
164+ Variant159 ( u8 ) ,
165+ Variant160 ( u8 ) ,
166+ Variant161 ( u8 ) ,
167+ Variant162 ( u8 ) ,
168+ Variant163 ( u8 ) ,
169+ Variant164 ( u8 ) ,
170+ Variant165 ( u8 ) ,
171+ Variant166 ( u8 ) ,
172+ Variant167 ( u8 ) ,
173+ Variant168 ( u8 ) ,
174+ Variant169 ( u8 ) ,
175+ Variant170 ( u8 ) ,
176+ Variant171 ( u8 ) ,
177+ Variant172 ( u8 ) ,
178+ Variant173 ( u8 ) ,
179+ Variant174 ( u8 ) ,
180+ Variant175 ( u8 ) ,
181+ Variant176 ( u8 ) ,
182+ Variant177 ( u8 ) ,
183+ Variant178 ( u8 ) ,
184+ Variant179 ( u8 ) ,
185+ Variant180 ( u8 ) ,
186+ Variant181 ( u8 ) ,
187+ Variant182 ( u8 ) ,
188+ Variant183 ( u8 ) ,
189+ Variant184 ( u8 ) ,
190+ Variant185 ( u8 ) ,
191+ Variant186 ( u8 ) ,
192+ Variant187 ( u8 ) ,
193+ Variant188 ( u8 ) ,
194+ Variant189 ( u8 ) ,
195+ Variant190 ( u8 ) ,
196+ Variant191 ( u8 ) ,
197+ Variant192 ( u8 ) ,
198+ Variant193 ( u8 ) ,
199+ Variant194 ( u8 ) ,
200+ Variant195 ( u8 ) ,
201+ Variant196 ( u8 ) ,
202+ Variant197 ( u8 ) ,
203+ Variant198 ( u8 ) ,
204+ Variant199 ( u8 ) ,
205+ Variant200 ( u8 ) ,
206+ Variant201 ( u8 ) ,
207+ Variant202 ( u8 ) ,
208+ Variant203 ( u8 ) ,
209+ Variant204 ( u8 ) ,
210+ Variant205 ( u8 ) ,
211+ Variant206 ( u8 ) ,
212+ Variant207 ( u8 ) ,
213+ Variant208 ( u8 ) ,
214+ Variant209 ( u8 ) ,
215+ Variant210 ( u8 ) ,
216+ Variant211 ( u8 ) ,
217+ Variant212 ( u8 ) ,
218+ Variant213 ( u8 ) ,
219+ Variant214 ( u8 ) ,
220+ Variant215 ( u8 ) ,
221+ Variant216 ( u8 ) ,
222+ Variant217 ( u8 ) ,
223+ Variant218 ( u8 ) ,
224+ Variant219 ( u8 ) ,
225+ Variant220 ( u8 ) ,
226+ Variant221 ( u8 ) ,
227+ Variant222 ( u8 ) ,
228+ Variant223 ( u8 ) ,
229+ Variant224 ( u8 ) ,
230+ Variant225 ( u8 ) ,
231+ Variant226 ( u8 ) ,
232+ Variant227 ( u8 ) ,
233+ Variant228 ( u8 ) ,
234+ Variant229 ( u8 ) ,
235+ Variant230 ( u8 ) ,
236+ Variant231 ( u8 ) ,
237+ Variant232 ( u8 ) ,
238+ Variant233 ( u8 ) ,
239+ Variant234 ( u8 ) ,
240+ Variant235 ( u8 ) ,
241+ Variant236 ( u8 ) ,
242+ Variant237 ( u8 ) ,
243+ Variant238 ( u8 ) ,
244+ Variant239 ( u8 ) ,
245+ Variant240 ( u8 ) ,
246+ Variant241 ( u8 ) ,
247+ Variant242 ( u8 ) ,
248+ Variant243 ( u8 ) ,
249+ Variant244 ( u8 ) ,
250+ Variant245 ( u8 ) ,
251+ Variant246 ( u8 ) ,
252+ Variant247 ( u8 ) ,
253+ Variant248 ( u8 ) ,
254+ Variant249 ( u8 ) ,
255+ Variant250 ( u8 ) ,
256+ Variant251 ( u8 ) ,
257+ Variant252 ( u8 ) ,
258+ Variant253 ( u8 ) ,
259+ Variant254 ( u8 ) ,
260+ Variant255 ( u8 ) ,
261+ Variant256 ( u8 ) ,
262+ }
263+
264+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ error: Enums can not have more than 256 variants
2+ --> tests/ui/derive/tokenizable/enum_size_not_supported.rs:261:5
3+ |
4+ 261 | Variant256(u8),
5+ | ^^^^^^^^^^
You can’t perform that action at this time.
0 commit comments