diff options
| author | gingerBill <bill@gingerbill.org> | 2024-09-11 12:01:01 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2024-09-11 12:01:01 +0100 |
| commit | 9b06ea5bfd57c386194438a6a1afd34aa18bb229 (patch) | |
| tree | 4ada0133730580393eb14c0a8c48391e0f071a6e /src/llvm_backend_expr.cpp | |
| parent | b379d25a12b4eee1e48d18f7ed5f65a018086f5d (diff) | |
Fix #4229 for edge case `os.Error`/`os.Errno` legacy bodge
Diffstat (limited to 'src/llvm_backend_expr.cpp')
| -rw-r--r-- | src/llvm_backend_expr.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index f20c52e88..58467db2e 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -3451,8 +3451,14 @@ gb_internal lbValue lb_build_expr_internal(lbProcedure *p, Ast *expr) { switch (expr->kind) { case_ast_node(bl, BasicLit, expr); + if (type != nullptr && type->Named.name == "Error") { + Entity *e = type->Named.type_name; + if (e->pkg && e->pkg->name == "os") { + return lb_const_nil(p->module, type); + } + } TokenPos pos = bl->token.pos; - GB_PANIC("Non-constant basic literal %s - %.*s", token_pos_to_string(pos), LIT(token_strings[bl->token.kind])); + GB_PANIC("Non-constant basic literal %s - %.*s (%s)", token_pos_to_string(pos), LIT(token_strings[bl->token.kind]), type_to_string(type)); case_end; case_ast_node(bd, BasicDirective, expr); |