authorgravatar for benjamin.feng@glassdoor.comBenjamin Feng <benjamin.feng@glassdoor.com> 2019-06-20 23:11:41-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-19 17:11:58-04:00
log484f8a4cc217fc08d09160ea02d8de6e122b07e9
tree9dcbee9f4045888c061f9cfaaaba59777d2c5687
parent4708fb23c0d96de171d173e252689d26cd01b102
signaturelock-open Commit is signed but in an unrecognized format.

Switch old switch / @TagType() to use inferred enums


1 files changed, 98 insertions(+), 100 deletions(-)

std/zig/ast.zig+98-100
......@@ -160,103 +160,101 @@ pub const Error = union(enum) {
160160
161161 pub fn render(self: *const Error, tokens: *Tree.TokenList, stream: var) !void {
162162 switch (self.*) {
163 // TODO https://github.com/ziglang/zig/issues/683
164 @TagType(Error).InvalidToken => |*x| return x.render(tokens, stream),
165 @TagType(Error).InvalidAmpersandAmpersand => |*x| return x.render(tokens, stream),
166 @TagType(Error).ExpectedContainerMembers => |*x| return x.render(tokens, stream),
167 @TagType(Error).ExpectedStringLiteral => |*x| return x.render(tokens, stream),
168 @TagType(Error).ExpectedIntegerLiteral => |*x| return x.render(tokens, stream),
169 @TagType(Error).ExpectedPubItem => |*x| return x.render(tokens, stream),
170 @TagType(Error).ExpectedIdentifier => |*x| return x.render(tokens, stream),
171 @TagType(Error).ExpectedStatement => |*x| return x.render(tokens, stream),
172 @TagType(Error).ExpectedVarDeclOrFn => |*x| return x.render(tokens, stream),
173 @TagType(Error).ExpectedVarDecl => |*x| return x.render(tokens, stream),
174 @TagType(Error).ExpectedReturnType => |*x| return x.render(tokens, stream),
175 @TagType(Error).ExpectedAggregateKw => |*x| return x.render(tokens, stream),
176 @TagType(Error).UnattachedDocComment => |*x| return x.render(tokens, stream),
177 @TagType(Error).ExpectedEqOrSemi => |*x| return x.render(tokens, stream),
178 @TagType(Error).ExpectedSemiOrLBrace => |*x| return x.render(tokens, stream),
179 @TagType(Error).ExpectedSemiOrElse => |*x| return x.render(tokens, stream),
180 @TagType(Error).ExpectedLabelOrLBrace => |*x| return x.render(tokens, stream),
181 @TagType(Error).ExpectedLBrace => |*x| return x.render(tokens, stream),
182 @TagType(Error).ExpectedColonOrRParen => |*x| return x.render(tokens, stream),
183 @TagType(Error).ExpectedLabelable => |*x| return x.render(tokens, stream),
184 @TagType(Error).ExpectedInlinable => |*x| return x.render(tokens, stream),
185 @TagType(Error).ExpectedAsmOutputReturnOrType => |*x| return x.render(tokens, stream),
186 @TagType(Error).ExpectedCall => |*x| return x.render(tokens, stream),
187 @TagType(Error).ExpectedCallOrFnProto => |*x| return x.render(tokens, stream),
188 @TagType(Error).ExpectedSliceOrRBracket => |*x| return x.render(tokens, stream),
189 @TagType(Error).ExtraAlignQualifier => |*x| return x.render(tokens, stream),
190 @TagType(Error).ExtraConstQualifier => |*x| return x.render(tokens, stream),
191 @TagType(Error).ExtraVolatileQualifier => |*x| return x.render(tokens, stream),
192 @TagType(Error).ExtraAllowZeroQualifier => |*x| return x.render(tokens, stream),
193 @TagType(Error).ExpectedTypeExpr => |*x| return x.render(tokens, stream),
194 @TagType(Error).ExpectedPrimaryTypeExpr => |*x| return x.render(tokens, stream),
195 @TagType(Error).ExpectedParamType => |*x| return x.render(tokens, stream),
196 @TagType(Error).ExpectedExpr => |*x| return x.render(tokens, stream),
197 @TagType(Error).ExpectedPrimaryExpr => |*x| return x.render(tokens, stream),
198 @TagType(Error).ExpectedToken => |*x| return x.render(tokens, stream),
199 @TagType(Error).ExpectedCommaOrEnd => |*x| return x.render(tokens, stream),
200 @TagType(Error).ExpectedParamList => |*x| return x.render(tokens, stream),
201 @TagType(Error).ExpectedPayload => |*x| return x.render(tokens, stream),
202 @TagType(Error).ExpectedBlockOrAssignment => |*x| return x.render(tokens, stream),
203 @TagType(Error).ExpectedBlockOrExpression => |*x| return x.render(tokens, stream),
204 @TagType(Error).ExpectedExprOrAssignment => |*x| return x.render(tokens, stream),
205 @TagType(Error).ExpectedPrefixExpr => |*x| return x.render(tokens, stream),
206 @TagType(Error).ExpectedLoopExpr => |*x| return x.render(tokens, stream),
207 @TagType(Error).ExpectedDerefOrUnwrap => |*x| return x.render(tokens, stream),
208 @TagType(Error).ExpectedSuffixOp => |*x| return x.render(tokens, stream),
163 .InvalidToken => |*x| return x.render(tokens, stream),
164 .InvalidAmpersandAmpersand => |*x| return x.render(tokens, stream),
165 .ExpectedContainerMembers => |*x| return x.render(tokens, stream),
166 .ExpectedStringLiteral => |*x| return x.render(tokens, stream),
167 .ExpectedIntegerLiteral => |*x| return x.render(tokens, stream),
168 .ExpectedPubItem => |*x| return x.render(tokens, stream),
169 .ExpectedIdentifier => |*x| return x.render(tokens, stream),
170 .ExpectedStatement => |*x| return x.render(tokens, stream),
171 .ExpectedVarDeclOrFn => |*x| return x.render(tokens, stream),
172 .ExpectedVarDecl => |*x| return x.render(tokens, stream),
173 .ExpectedReturnType => |*x| return x.render(tokens, stream),
174 .ExpectedAggregateKw => |*x| return x.render(tokens, stream),
175 .UnattachedDocComment => |*x| return x.render(tokens, stream),
176 .ExpectedEqOrSemi => |*x| return x.render(tokens, stream),
177 .ExpectedSemiOrLBrace => |*x| return x.render(tokens, stream),
178 .ExpectedSemiOrElse => |*x| return x.render(tokens, stream),
179 .ExpectedLabelOrLBrace => |*x| return x.render(tokens, stream),
180 .ExpectedLBrace => |*x| return x.render(tokens, stream),
181 .ExpectedColonOrRParen => |*x| return x.render(tokens, stream),
182 .ExpectedLabelable => |*x| return x.render(tokens, stream),
183 .ExpectedInlinable => |*x| return x.render(tokens, stream),
184 .ExpectedAsmOutputReturnOrType => |*x| return x.render(tokens, stream),
185 .ExpectedCall => |*x| return x.render(tokens, stream),
186 .ExpectedCallOrFnProto => |*x| return x.render(tokens, stream),
187 .ExpectedSliceOrRBracket => |*x| return x.render(tokens, stream),
188 .ExtraAlignQualifier => |*x| return x.render(tokens, stream),
189 .ExtraConstQualifier => |*x| return x.render(tokens, stream),
190 .ExtraVolatileQualifier => |*x| return x.render(tokens, stream),
191 .ExtraAllowZeroQualifier => |*x| return x.render(tokens, stream),
192 .ExpectedTypeExpr => |*x| return x.render(tokens, stream),
193 .ExpectedPrimaryTypeExpr => |*x| return x.render(tokens, stream),
194 .ExpectedParamType => |*x| return x.render(tokens, stream),
195 .ExpectedExpr => |*x| return x.render(tokens, stream),
196 .ExpectedPrimaryExpr => |*x| return x.render(tokens, stream),
197 .ExpectedToken => |*x| return x.render(tokens, stream),
198 .ExpectedCommaOrEnd => |*x| return x.render(tokens, stream),
199 .ExpectedParamList => |*x| return x.render(tokens, stream),
200 .ExpectedPayload => |*x| return x.render(tokens, stream),
201 .ExpectedBlockOrAssignment => |*x| return x.render(tokens, stream),
202 .ExpectedBlockOrExpression => |*x| return x.render(tokens, stream),
203 .ExpectedExprOrAssignment => |*x| return x.render(tokens, stream),
204 .ExpectedPrefixExpr => |*x| return x.render(tokens, stream),
205 .ExpectedLoopExpr => |*x| return x.render(tokens, stream),
206 .ExpectedDerefOrUnwrap => |*x| return x.render(tokens, stream),
207 .ExpectedSuffixOp => |*x| return x.render(tokens, stream),
209208 }
210209 }
211210
212211 pub fn loc(self: *const Error) TokenIndex {
213212 switch (self.*) {
214 // TODO https://github.com/ziglang/zig/issues/683
215 @TagType(Error).InvalidToken => |x| return x.token,
216 @TagType(Error).InvalidAmpersandAmpersand => |x| return x.token,
217 @TagType(Error).ExpectedContainerMembers => |x| return x.token,
218 @TagType(Error).ExpectedStringLiteral => |x| return x.token,
219 @TagType(Error).ExpectedIntegerLiteral => |x| return x.token,
220 @TagType(Error).ExpectedPubItem => |x| return x.token,
221 @TagType(Error).ExpectedIdentifier => |x| return x.token,
222 @TagType(Error).ExpectedStatement => |x| return x.token,
223 @TagType(Error).ExpectedVarDeclOrFn => |x| return x.token,
224 @TagType(Error).ExpectedVarDecl => |x| return x.token,
225 @TagType(Error).ExpectedReturnType => |x| return x.token,
226 @TagType(Error).ExpectedAggregateKw => |x| return x.token,
227 @TagType(Error).UnattachedDocComment => |x| return x.token,
228 @TagType(Error).ExpectedEqOrSemi => |x| return x.token,
229 @TagType(Error).ExpectedSemiOrLBrace => |x| return x.token,
230 @TagType(Error).ExpectedSemiOrElse => |x| return x.token,
231 @TagType(Error).ExpectedLabelOrLBrace => |x| return x.token,
232 @TagType(Error).ExpectedLBrace => |x| return x.token,
233 @TagType(Error).ExpectedColonOrRParen => |x| return x.token,
234 @TagType(Error).ExpectedLabelable => |x| return x.token,
235 @TagType(Error).ExpectedInlinable => |x| return x.token,
236 @TagType(Error).ExpectedAsmOutputReturnOrType => |x| return x.token,
237 @TagType(Error).ExpectedCall => |x| return x.node.firstToken(),
238 @TagType(Error).ExpectedCallOrFnProto => |x| return x.node.firstToken(),
239 @TagType(Error).ExpectedSliceOrRBracket => |x| return x.token,
240 @TagType(Error).ExtraAlignQualifier => |x| return x.token,
241 @TagType(Error).ExtraConstQualifier => |x| return x.token,
242 @TagType(Error).ExtraVolatileQualifier => |x| return x.token,
243 @TagType(Error).ExtraAllowZeroQualifier => |x| return x.token,
244 @TagType(Error).ExpectedTypeExpr => |x| return x.token,
245 @TagType(Error).ExpectedPrimaryTypeExpr => |x| return x.token,
246 @TagType(Error).ExpectedParamType => |x| return x.token,
247 @TagType(Error).ExpectedExpr => |x| return x.token,
248 @TagType(Error).ExpectedPrimaryExpr => |x| return x.token,
249 @TagType(Error).ExpectedToken => |x| return x.token,
250 @TagType(Error).ExpectedCommaOrEnd => |x| return x.token,
251 @TagType(Error).ExpectedParamList => |x| return x.token,
252 @TagType(Error).ExpectedPayload => |x| return x.token,
253 @TagType(Error).ExpectedBlockOrAssignment => |x| return x.token,
254 @TagType(Error).ExpectedBlockOrExpression => |x| return x.token,
255 @TagType(Error).ExpectedExprOrAssignment => |x| return x.token,
256 @TagType(Error).ExpectedPrefixExpr => |x| return x.token,
257 @TagType(Error).ExpectedLoopExpr => |x| return x.token,
258 @TagType(Error).ExpectedDerefOrUnwrap => |x| return x.token,
259 @TagType(Error).ExpectedSuffixOp => |x| return x.token,
213 .InvalidToken => |x| return x.token,
214 .InvalidAmpersandAmpersand => |x| return x.token,
215 .ExpectedContainerMembers => |x| return x.token,
216 .ExpectedStringLiteral => |x| return x.token,
217 .ExpectedIntegerLiteral => |x| return x.token,
218 .ExpectedPubItem => |x| return x.token,
219 .ExpectedIdentifier => |x| return x.token,
220 .ExpectedStatement => |x| return x.token,
221 .ExpectedVarDeclOrFn => |x| return x.token,
222 .ExpectedVarDecl => |x| return x.token,
223 .ExpectedReturnType => |x| return x.token,
224 .ExpectedAggregateKw => |x| return x.token,
225 .UnattachedDocComment => |x| return x.token,
226 .ExpectedEqOrSemi => |x| return x.token,
227 .ExpectedSemiOrLBrace => |x| return x.token,
228 .ExpectedSemiOrElse => |x| return x.token,
229 .ExpectedLabelOrLBrace => |x| return x.token,
230 .ExpectedLBrace => |x| return x.token,
231 .ExpectedColonOrRParen => |x| return x.token,
232 .ExpectedLabelable => |x| return x.token,
233 .ExpectedInlinable => |x| return x.token,
234 .ExpectedAsmOutputReturnOrType => |x| return x.token,
235 .ExpectedCall => |x| return x.node.firstToken(),
236 .ExpectedCallOrFnProto => |x| return x.node.firstToken(),
237 .ExpectedSliceOrRBracket => |x| return x.token,
238 .ExtraAlignQualifier => |x| return x.token,
239 .ExtraConstQualifier => |x| return x.token,
240 .ExtraVolatileQualifier => |x| return x.token,
241 .ExtraAllowZeroQualifier => |x| return x.token,
242 .ExpectedTypeExpr => |x| return x.token,
243 .ExpectedPrimaryTypeExpr => |x| return x.token,
244 .ExpectedParamType => |x| return x.token,
245 .ExpectedExpr => |x| return x.token,
246 .ExpectedPrimaryExpr => |x| return x.token,
247 .ExpectedToken => |x| return x.token,
248 .ExpectedCommaOrEnd => |x| return x.token,
249 .ExpectedParamList => |x| return x.token,
250 .ExpectedPayload => |x| return x.token,
251 .ExpectedBlockOrAssignment => |x| return x.token,
252 .ExpectedBlockOrExpression => |x| return x.token,
253 .ExpectedExprOrAssignment => |x| return x.token,
254 .ExpectedPrefixExpr => |x| return x.token,
255 .ExpectedLoopExpr => |x| return x.token,
256 .ExpectedDerefOrUnwrap => |x| return x.token,
257 .ExpectedSuffixOp => |x| return x.token,
260258 }
261259 }
262260
......@@ -1712,15 +1710,15 @@ pub const Node = struct {
17121710 i -= 1;
17131711
17141712 switch (self.op) {
1715 @TagType(Op).Call => |*call_info| {
1713 .Call => |*call_info| {
17161714 if (i < call_info.params.len) return call_info.params.at(i).*;
17171715 i -= call_info.params.len;
17181716 },
1719 Op.ArrayAccess => |index_expr| {
1717 .ArrayAccess => |index_expr| {
17201718 if (i < 1) return index_expr;
17211719 i -= 1;
17221720 },
1723 @TagType(Op).Slice => |range| {
1721 .Slice => |range| {
17241722 if (i < 1) return range.start;
17251723 i -= 1;
17261724
......@@ -1729,16 +1727,16 @@ pub const Node = struct {
17291727 i -= 1;
17301728 }
17311729 },
1732 Op.ArrayInitializer => |*exprs| {
1730 .ArrayInitializer => |*exprs| {
17331731 if (i < exprs.len) return exprs.at(i).*;
17341732 i -= exprs.len;
17351733 },
1736 Op.StructInitializer => |*fields| {
1734 .StructInitializer => |*fields| {
17371735 if (i < fields.len) return fields.at(i).*;
17381736 i -= fields.len;
17391737 },
1740 Op.UnwrapOptional,
1741 Op.Deref,
1738 .UnwrapOptional,
1739 .Deref,
17421740 => {},
17431741 }
17441742
......@@ -1747,7 +1745,7 @@ pub const Node = struct {
17471745
17481746 pub fn firstToken(self: *const SuffixOp) TokenIndex {
17491747 switch (self.op) {
1750 @TagType(Op).Call => |*call_info| if (call_info.async_attr) |async_attr| return async_attr.firstToken(),
1748 .Call => |*call_info| if (call_info.async_attr) |async_attr| return async_attr.firstToken(),
17511749 else => {},
17521750 }
17531751 return self.lhs.firstToken();