| ... | ... | @@ -407,8 +407,7 @@ fn visitFnDecl(c: *Context, fn_decl: *const ZigClangFunctionDecl) Error!void { |
| 407 | 407 | while (it.next()) |p| { |
| 408 | 408 | const param = @fieldParentPtr(ast.Node.ParamDecl, "base", p.*); |
| 409 | 409 | const param_name = tokenSlice(c, param.name_token orelse |
| 410 | | return failDecl(c, fn_decl_loc, fn_name, "function {} parameter has no name", .{fn_name}) |
| 411 | | ); |
| 410 | return failDecl(c, fn_decl_loc, fn_name, "function {} parameter has no name", .{fn_name})); |
| 412 | 411 | |
| 413 | 412 | const checked_param_name = if (try scope.createAlias(rp.c, param_name)) |a| blk: { |
| 414 | 413 | try block_scope.variables.push(.{ .name = param_name, .alias = a }); |
| ... | ... | @@ -4109,6 +4108,15 @@ fn transMacroDefine(c: *Context, it: *ctok.TokenList.Iterator, name: []const u8, |
| 4109 | 4108 | node.eq_token = try appendToken(c, .Equal, "="); |
| 4110 | 4109 | |
| 4111 | 4110 | node.init_node = try parseCExpr(rp, it, source_loc, scope); |
| 4111 | const last = it.next().?; |
| 4112 | if (last.id != .Eof) |
| 4113 | return revertAndWarn( |
| 4114 | rp, |
| 4115 | error.UnsupportedTranslation, |
| 4116 | source_loc, |
| 4117 | "unable to translate C expr, unexpected token: {}", |
| 4118 | .{last.id}, |
| 4119 | ); |
| 4112 | 4120 | |
| 4113 | 4121 | node.semicolon_token = try appendToken(c, .Semicolon, ";"); |
| 4114 | 4122 | _ = try c.global_scope.macro_table.put(name, &node.base); |
| ... | ... | @@ -4196,6 +4204,15 @@ fn transMacroFnDefine(c: *Context, it: *ctok.TokenList.Iterator, name: []const u |
| 4196 | 4204 | |
| 4197 | 4205 | const return_expr = try transCreateNodeReturnExpr(c); |
| 4198 | 4206 | const expr = try parseCExpr(rp, it, source_loc, scope); |
| 4207 | const last = it.next().?; |
| 4208 | if (last.id != .Eof) |
| 4209 | return revertAndWarn( |
| 4210 | rp, |
| 4211 | error.UnsupportedTranslation, |
| 4212 | source_loc, |
| 4213 | "unable to translate C expr, unexpected token: {}", |
| 4214 | .{last.id}, |
| 4215 | ); |
| 4199 | 4216 | _ = try appendToken(c, .Semicolon, ";"); |
| 4200 | 4217 | try type_of.params.push(expr); |
| 4201 | 4218 | return_expr.rhs = expr; |
| ... | ... | @@ -4475,17 +4492,10 @@ fn parseCSuffixOpExpr(rp: RestorePoint, it: *ctok.TokenList.Iterator, source_loc |
| 4475 | 4492 | call_node.rtoken = try appendToken(rp.c, .RParen, ")"); |
| 4476 | 4493 | node = &call_node.base; |
| 4477 | 4494 | }, |
| 4478 | | .Eof => { |
| 4495 | else => { |
| 4479 | 4496 | _ = it.prev(); |
| 4480 | 4497 | return node; |
| 4481 | 4498 | }, |
| 4482 | | else => return revertAndWarn( |
| 4483 | | rp, |
| 4484 | | error.UnsupportedTranslation, |
| 4485 | | source_loc, |
| 4486 | | "unable to translate C expr, unexpected token: {}", |
| 4487 | | .{tok.id}, |
| 4488 | | ), |
| 4489 | 4499 | } |
| 4490 | 4500 | } |
| 4491 | 4501 | } |