| ... | ... | @@ -2878,9 +2878,8 @@ fn fnDecl( |
| 2878 | 2878 | const tree = astgen.tree; |
| 2879 | 2879 | const token_tags = tree.tokens.items(.tag); |
| 2880 | 2880 | |
| 2881 | | const fn_name_token = fn_proto.name_token orelse { |
| 2882 | | return astgen.failTok(fn_proto.ast.fn_token, "missing function name", .{}); |
| 2883 | | }; |
| 2881 | // missing function name already happened in scanDecls() |
| 2882 | const fn_name_token = fn_proto.name_token orelse return error.AnalysisFail; |
| 2884 | 2883 | const fn_name_str_index = try astgen.identAsString(fn_name_token); |
| 2885 | 2884 | |
| 2886 | 2885 | // We insert this at the beginning so that its instruction index marks the |
| ... | ... | @@ -10145,9 +10144,9 @@ fn scanDecls(astgen: *AstGen, namespace: *Scope.Namespace, members: []const ast. |
| 10145 | 10144 | const tree = astgen.tree; |
| 10146 | 10145 | const node_tags = tree.nodes.items(.tag); |
| 10147 | 10146 | const main_tokens = tree.nodes.items(.main_token); |
| 10147 | const token_tags = tree.tokens.items(.tag); |
| 10148 | 10148 | for (members) |member_node| { |
| 10149 | 10149 | const name_token = switch (node_tags[member_node]) { |
| 10150 | | .fn_decl, |
| 10151 | 10150 | .fn_proto_simple, |
| 10152 | 10151 | .fn_proto_multi, |
| 10153 | 10152 | .fn_proto_one, |
| ... | ... | @@ -10158,6 +10157,17 @@ fn scanDecls(astgen: *AstGen, namespace: *Scope.Namespace, members: []const ast. |
| 10158 | 10157 | .aligned_var_decl, |
| 10159 | 10158 | => main_tokens[member_node] + 1, |
| 10160 | 10159 | |
| 10160 | .fn_decl => blk: { |
| 10161 | const ident = main_tokens[member_node] + 1; |
| 10162 | if (token_tags[ident] != .identifier) { |
| 10163 | switch (astgen.failNode(member_node, "missing function name", .{})) { |
| 10164 | error.AnalysisFail => continue, |
| 10165 | error.OutOfMemory => return error.OutOfMemory, |
| 10166 | } |
| 10167 | } |
| 10168 | break :blk ident; |
| 10169 | }, |
| 10170 | |
| 10161 | 10171 | else => continue, |
| 10162 | 10172 | }; |
| 10163 | 10173 | |