From 2ff5acc2a1a2dcabf1a4024798be64743793d348 Mon Sep 17 00:00:00 2001 From: Christoffer Lerno Date: Tue, 31 Aug 2021 13:03:12 +0200 Subject: [PATCH] Allow constant strings as default values. --- resources/lib/std/io.c3 | 2 +- src/compiler/sema_decls.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/resources/lib/std/io.c3 b/resources/lib/std/io.c3 index cbf0507a2..da6579448 100644 --- a/resources/lib/std/io.c3 +++ b/resources/lib/std/io.c3 @@ -45,7 +45,7 @@ func int print(char *message) return 1; } -func int println(char *message) @inline +func int println(char *message = "") @inline { return _puts(message); } diff --git a/src/compiler/sema_decls.c b/src/compiler/sema_decls.c index a8aa90f1b..8d325a9c3 100644 --- a/src/compiler/sema_decls.c +++ b/src/compiler/sema_decls.c @@ -498,7 +498,9 @@ static inline bool sema_analyse_function_param(Context *context, Decl *param, bo { Expr *expr = param->var.init_expr; if (!sema_analyse_expr_of_required_type(context, param->type, expr, false)) return false; - if (expr->expr_kind != EXPR_CONST) + Expr *inner = expr; + while (inner->expr_kind == EXPR_CAST) inner = expr->cast_expr.expr; + if (inner->expr_kind != EXPR_CONST) { SEMA_ERROR(expr, "Only constant expressions may be used as default values."); return false;