aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-09-11 12:01:01 +0100
committergingerBill <bill@gingerbill.org>2024-09-11 12:01:01 +0100
commit9b06ea5bfd57c386194438a6a1afd34aa18bb229 (patch)
tree4ada0133730580393eb14c0a8c48391e0f071a6e /src/llvm_backend_expr.cpp
parentb379d25a12b4eee1e48d18f7ed5f65a018086f5d (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.cpp8
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);