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) {...@@ -160,103 +160,101 @@ pub const Error = union(enum) {
160160
161 pub fn render(self: *const Error, tokens: *Tree.TokenList, stream: var) !void {161 pub fn render(self: *const Error, tokens: *Tree.TokenList, stream: var) !void {
162 switch (self.*) {162 switch (self.*) {
163 // TODO https://github.com/ziglang/zig/issues/683163 .InvalidToken => |*x| return x.render(tokens, stream),
164 @TagType(Error).InvalidToken => |*x| return x.render(tokens, stream),164 .InvalidAmpersandAmpersand => |*x| return x.render(tokens, stream),
165 @TagType(Error).InvalidAmpersandAmpersand => |*x| return x.render(tokens, stream),165 .ExpectedContainerMembers => |*x| return x.render(tokens, stream),
166 @TagType(Error).ExpectedContainerMembers => |*x| return x.render(tokens, stream),166 .ExpectedStringLiteral => |*x| return x.render(tokens, stream),
167 @TagType(Error).ExpectedStringLiteral => |*x| return x.render(tokens, stream),167 .ExpectedIntegerLiteral => |*x| return x.render(tokens, stream),
168 @TagType(Error).ExpectedIntegerLiteral => |*x| return x.render(tokens, stream),168 .ExpectedPubItem => |*x| return x.render(tokens, stream),
169 @TagType(Error).ExpectedPubItem => |*x| return x.render(tokens, stream),169 .ExpectedIdentifier => |*x| return x.render(tokens, stream),
170 @TagType(Error).ExpectedIdentifier => |*x| return x.render(tokens, stream),170 .ExpectedStatement => |*x| return x.render(tokens, stream),
171 @TagType(Error).ExpectedStatement => |*x| return x.render(tokens, stream),171 .ExpectedVarDeclOrFn => |*x| return x.render(tokens, stream),
172 @TagType(Error).ExpectedVarDeclOrFn => |*x| return x.render(tokens, stream),172 .ExpectedVarDecl => |*x| return x.render(tokens, stream),
173 @TagType(Error).ExpectedVarDecl => |*x| return x.render(tokens, stream),173 .ExpectedReturnType => |*x| return x.render(tokens, stream),
174 @TagType(Error).ExpectedReturnType => |*x| return x.render(tokens, stream),174 .ExpectedAggregateKw => |*x| return x.render(tokens, stream),
175 @TagType(Error).ExpectedAggregateKw => |*x| return x.render(tokens, stream),175 .UnattachedDocComment => |*x| return x.render(tokens, stream),
176 @TagType(Error).UnattachedDocComment => |*x| return x.render(tokens, stream),176 .ExpectedEqOrSemi => |*x| return x.render(tokens, stream),
177 @TagType(Error).ExpectedEqOrSemi => |*x| return x.render(tokens, stream),177 .ExpectedSemiOrLBrace => |*x| return x.render(tokens, stream),
178 @TagType(Error).ExpectedSemiOrLBrace => |*x| return x.render(tokens, stream),178 .ExpectedSemiOrElse => |*x| return x.render(tokens, stream),
179 @TagType(Error).ExpectedSemiOrElse => |*x| return x.render(tokens, stream),179 .ExpectedLabelOrLBrace => |*x| return x.render(tokens, stream),
180 @TagType(Error).ExpectedLabelOrLBrace => |*x| return x.render(tokens, stream),180 .ExpectedLBrace => |*x| return x.render(tokens, stream),
181 @TagType(Error).ExpectedLBrace => |*x| return x.render(tokens, stream),181 .ExpectedColonOrRParen => |*x| return x.render(tokens, stream),
182 @TagType(Error).ExpectedColonOrRParen => |*x| return x.render(tokens, stream),182 .ExpectedLabelable => |*x| return x.render(tokens, stream),
183 @TagType(Error).ExpectedLabelable => |*x| return x.render(tokens, stream),183 .ExpectedInlinable => |*x| return x.render(tokens, stream),
184 @TagType(Error).ExpectedInlinable => |*x| return x.render(tokens, stream),184 .ExpectedAsmOutputReturnOrType => |*x| return x.render(tokens, stream),
185 @TagType(Error).ExpectedAsmOutputReturnOrType => |*x| return x.render(tokens, stream),185 .ExpectedCall => |*x| return x.render(tokens, stream),
186 @TagType(Error).ExpectedCall => |*x| return x.render(tokens, stream),186 .ExpectedCallOrFnProto => |*x| return x.render(tokens, stream),
187 @TagType(Error).ExpectedCallOrFnProto => |*x| return x.render(tokens, stream),187 .ExpectedSliceOrRBracket => |*x| return x.render(tokens, stream),
188 @TagType(Error).ExpectedSliceOrRBracket => |*x| return x.render(tokens, stream),188 .ExtraAlignQualifier => |*x| return x.render(tokens, stream),
189 @TagType(Error).ExtraAlignQualifier => |*x| return x.render(tokens, stream),189 .ExtraConstQualifier => |*x| return x.render(tokens, stream),
190 @TagType(Error).ExtraConstQualifier => |*x| return x.render(tokens, stream),190 .ExtraVolatileQualifier => |*x| return x.render(tokens, stream),
191 @TagType(Error).ExtraVolatileQualifier => |*x| return x.render(tokens, stream),191 .ExtraAllowZeroQualifier => |*x| return x.render(tokens, stream),
192 @TagType(Error).ExtraAllowZeroQualifier => |*x| return x.render(tokens, stream),192 .ExpectedTypeExpr => |*x| return x.render(tokens, stream),
193 @TagType(Error).ExpectedTypeExpr => |*x| return x.render(tokens, stream),193 .ExpectedPrimaryTypeExpr => |*x| return x.render(tokens, stream),
194 @TagType(Error).ExpectedPrimaryTypeExpr => |*x| return x.render(tokens, stream),194 .ExpectedParamType => |*x| return x.render(tokens, stream),
195 @TagType(Error).ExpectedParamType => |*x| return x.render(tokens, stream),195 .ExpectedExpr => |*x| return x.render(tokens, stream),
196 @TagType(Error).ExpectedExpr => |*x| return x.render(tokens, stream),196 .ExpectedPrimaryExpr => |*x| return x.render(tokens, stream),
197 @TagType(Error).ExpectedPrimaryExpr => |*x| return x.render(tokens, stream),197 .ExpectedToken => |*x| return x.render(tokens, stream),
198 @TagType(Error).ExpectedToken => |*x| return x.render(tokens, stream),198 .ExpectedCommaOrEnd => |*x| return x.render(tokens, stream),
199 @TagType(Error).ExpectedCommaOrEnd => |*x| return x.render(tokens, stream),199 .ExpectedParamList => |*x| return x.render(tokens, stream),
200 @TagType(Error).ExpectedParamList => |*x| return x.render(tokens, stream),200 .ExpectedPayload => |*x| return x.render(tokens, stream),
201 @TagType(Error).ExpectedPayload => |*x| return x.render(tokens, stream),201 .ExpectedBlockOrAssignment => |*x| return x.render(tokens, stream),
202 @TagType(Error).ExpectedBlockOrAssignment => |*x| return x.render(tokens, stream),202 .ExpectedBlockOrExpression => |*x| return x.render(tokens, stream),
203 @TagType(Error).ExpectedBlockOrExpression => |*x| return x.render(tokens, stream),203 .ExpectedExprOrAssignment => |*x| return x.render(tokens, stream),
204 @TagType(Error).ExpectedExprOrAssignment => |*x| return x.render(tokens, stream),204 .ExpectedPrefixExpr => |*x| return x.render(tokens, stream),
205 @TagType(Error).ExpectedPrefixExpr => |*x| return x.render(tokens, stream),205 .ExpectedLoopExpr => |*x| return x.render(tokens, stream),
206 @TagType(Error).ExpectedLoopExpr => |*x| return x.render(tokens, stream),206 .ExpectedDerefOrUnwrap => |*x| return x.render(tokens, stream),
207 @TagType(Error).ExpectedDerefOrUnwrap => |*x| return x.render(tokens, stream),207 .ExpectedSuffixOp => |*x| return x.render(tokens, stream),
208 @TagType(Error).ExpectedSuffixOp => |*x| return x.render(tokens, stream),
209 }208 }
210 }209 }
211210
212 pub fn loc(self: *const Error) TokenIndex {211 pub fn loc(self: *const Error) TokenIndex {
213 switch (self.*) {212 switch (self.*) {
214 // TODO https://github.com/ziglang/zig/issues/683213 .InvalidToken => |x| return x.token,
215 @TagType(Error).InvalidToken => |x| return x.token,214 .InvalidAmpersandAmpersand => |x| return x.token,
216 @TagType(Error).InvalidAmpersandAmpersand => |x| return x.token,215 .ExpectedContainerMembers => |x| return x.token,
217 @TagType(Error).ExpectedContainerMembers => |x| return x.token,216 .ExpectedStringLiteral => |x| return x.token,
218 @TagType(Error).ExpectedStringLiteral => |x| return x.token,217 .ExpectedIntegerLiteral => |x| return x.token,
219 @TagType(Error).ExpectedIntegerLiteral => |x| return x.token,218 .ExpectedPubItem => |x| return x.token,
220 @TagType(Error).ExpectedPubItem => |x| return x.token,219 .ExpectedIdentifier => |x| return x.token,
221 @TagType(Error).ExpectedIdentifier => |x| return x.token,220 .ExpectedStatement => |x| return x.token,
222 @TagType(Error).ExpectedStatement => |x| return x.token,221 .ExpectedVarDeclOrFn => |x| return x.token,
223 @TagType(Error).ExpectedVarDeclOrFn => |x| return x.token,222 .ExpectedVarDecl => |x| return x.token,
224 @TagType(Error).ExpectedVarDecl => |x| return x.token,223 .ExpectedReturnType => |x| return x.token,
225 @TagType(Error).ExpectedReturnType => |x| return x.token,224 .ExpectedAggregateKw => |x| return x.token,
226 @TagType(Error).ExpectedAggregateKw => |x| return x.token,225 .UnattachedDocComment => |x| return x.token,
227 @TagType(Error).UnattachedDocComment => |x| return x.token,226 .ExpectedEqOrSemi => |x| return x.token,
228 @TagType(Error).ExpectedEqOrSemi => |x| return x.token,227 .ExpectedSemiOrLBrace => |x| return x.token,
229 @TagType(Error).ExpectedSemiOrLBrace => |x| return x.token,228 .ExpectedSemiOrElse => |x| return x.token,
230 @TagType(Error).ExpectedSemiOrElse => |x| return x.token,229 .ExpectedLabelOrLBrace => |x| return x.token,
231 @TagType(Error).ExpectedLabelOrLBrace => |x| return x.token,230 .ExpectedLBrace => |x| return x.token,
232 @TagType(Error).ExpectedLBrace => |x| return x.token,231 .ExpectedColonOrRParen => |x| return x.token,
233 @TagType(Error).ExpectedColonOrRParen => |x| return x.token,232 .ExpectedLabelable => |x| return x.token,
234 @TagType(Error).ExpectedLabelable => |x| return x.token,233 .ExpectedInlinable => |x| return x.token,
235 @TagType(Error).ExpectedInlinable => |x| return x.token,234 .ExpectedAsmOutputReturnOrType => |x| return x.token,
236 @TagType(Error).ExpectedAsmOutputReturnOrType => |x| return x.token,235 .ExpectedCall => |x| return x.node.firstToken(),
237 @TagType(Error).ExpectedCall => |x| return x.node.firstToken(),236 .ExpectedCallOrFnProto => |x| return x.node.firstToken(),
238 @TagType(Error).ExpectedCallOrFnProto => |x| return x.node.firstToken(),237 .ExpectedSliceOrRBracket => |x| return x.token,
239 @TagType(Error).ExpectedSliceOrRBracket => |x| return x.token,238 .ExtraAlignQualifier => |x| return x.token,
240 @TagType(Error).ExtraAlignQualifier => |x| return x.token,239 .ExtraConstQualifier => |x| return x.token,
241 @TagType(Error).ExtraConstQualifier => |x| return x.token,240 .ExtraVolatileQualifier => |x| return x.token,
242 @TagType(Error).ExtraVolatileQualifier => |x| return x.token,241 .ExtraAllowZeroQualifier => |x| return x.token,
243 @TagType(Error).ExtraAllowZeroQualifier => |x| return x.token,242 .ExpectedTypeExpr => |x| return x.token,
244 @TagType(Error).ExpectedTypeExpr => |x| return x.token,243 .ExpectedPrimaryTypeExpr => |x| return x.token,
245 @TagType(Error).ExpectedPrimaryTypeExpr => |x| return x.token,244 .ExpectedParamType => |x| return x.token,
246 @TagType(Error).ExpectedParamType => |x| return x.token,245 .ExpectedExpr => |x| return x.token,
247 @TagType(Error).ExpectedExpr => |x| return x.token,246 .ExpectedPrimaryExpr => |x| return x.token,
248 @TagType(Error).ExpectedPrimaryExpr => |x| return x.token,247 .ExpectedToken => |x| return x.token,
249 @TagType(Error).ExpectedToken => |x| return x.token,248 .ExpectedCommaOrEnd => |x| return x.token,
250 @TagType(Error).ExpectedCommaOrEnd => |x| return x.token,249 .ExpectedParamList => |x| return x.token,
251 @TagType(Error).ExpectedParamList => |x| return x.token,250 .ExpectedPayload => |x| return x.token,
252 @TagType(Error).ExpectedPayload => |x| return x.token,251 .ExpectedBlockOrAssignment => |x| return x.token,
253 @TagType(Error).ExpectedBlockOrAssignment => |x| return x.token,252 .ExpectedBlockOrExpression => |x| return x.token,
254 @TagType(Error).ExpectedBlockOrExpression => |x| return x.token,253 .ExpectedExprOrAssignment => |x| return x.token,
255 @TagType(Error).ExpectedExprOrAssignment => |x| return x.token,254 .ExpectedPrefixExpr => |x| return x.token,
256 @TagType(Error).ExpectedPrefixExpr => |x| return x.token,255 .ExpectedLoopExpr => |x| return x.token,
257 @TagType(Error).ExpectedLoopExpr => |x| return x.token,256 .ExpectedDerefOrUnwrap => |x| return x.token,
258 @TagType(Error).ExpectedDerefOrUnwrap => |x| return x.token,257 .ExpectedSuffixOp => |x| return x.token,
259 @TagType(Error).ExpectedSuffixOp => |x| return x.token,
260 }258 }
261 }259 }
262260
...@@ -1712,15 +1710,15 @@ pub const Node = struct {...@@ -1712,15 +1710,15 @@ pub const Node = struct {
1712 i -= 1;1710 i -= 1;
17131711
1714 switch (self.op) {1712 switch (self.op) {
1715 @TagType(Op).Call => |*call_info| {1713 .Call => |*call_info| {
1716 if (i < call_info.params.len) return call_info.params.at(i).*;1714 if (i < call_info.params.len) return call_info.params.at(i).*;
1717 i -= call_info.params.len;1715 i -= call_info.params.len;
1718 },1716 },
1719 Op.ArrayAccess => |index_expr| {1717 .ArrayAccess => |index_expr| {
1720 if (i < 1) return index_expr;1718 if (i < 1) return index_expr;
1721 i -= 1;1719 i -= 1;
1722 },1720 },
1723 @TagType(Op).Slice => |range| {1721 .Slice => |range| {
1724 if (i < 1) return range.start;1722 if (i < 1) return range.start;
1725 i -= 1;1723 i -= 1;
17261724
...@@ -1729,16 +1727,16 @@ pub const Node = struct {...@@ -1729,16 +1727,16 @@ pub const Node = struct {
1729 i -= 1;1727 i -= 1;
1730 }1728 }
1731 },1729 },
1732 Op.ArrayInitializer => |*exprs| {1730 .ArrayInitializer => |*exprs| {
1733 if (i < exprs.len) return exprs.at(i).*;1731 if (i < exprs.len) return exprs.at(i).*;
1734 i -= exprs.len;1732 i -= exprs.len;
1735 },1733 },
1736 Op.StructInitializer => |*fields| {1734 .StructInitializer => |*fields| {
1737 if (i < fields.len) return fields.at(i).*;1735 if (i < fields.len) return fields.at(i).*;
1738 i -= fields.len;1736 i -= fields.len;
1739 },1737 },
1740 Op.UnwrapOptional,1738 .UnwrapOptional,
1741 Op.Deref,1739 .Deref,
1742 => {},1740 => {},
1743 }1741 }
17441742
...@@ -1747,7 +1745,7 @@ pub const Node = struct {...@@ -1747,7 +1745,7 @@ pub const Node = struct {
17471745
1748 pub fn firstToken(self: *const SuffixOp) TokenIndex {1746 pub fn firstToken(self: *const SuffixOp) TokenIndex {
1749 switch (self.op) {1747 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(),
1751 else => {},1749 else => {},
1752 }1750 }
1753 return self.lhs.firstToken();1751 return self.lhs.firstToken();