aboutsummaryrefslogtreecommitdiff
path: root/src/stage1/ir.cpp
diff options
context:
space:
mode:
authorpfg <pfg@pfg.pw>2020-10-06 22:38:36 -0700
committerAndrew Kelley <andrew@ziglang.org>2020-10-07 03:50:11 -0400
commitae161863db544e2db20ba7705bf0ada7d3ce5c94 (patch)
treebe0b211bad4d896ff107dab38ef398bc00d4dabe /src/stage1/ir.cpp
parentf2d374e8465042fa5cb6bf2be7b9b086948f3a94 (diff)
downloadzig-ae161863db544e2db20ba7705bf0ada7d3ce5c94.tar.gz
zig-ae161863db544e2db20ba7705bf0ada7d3ce5c94.zip
stage1: improve error messages for missing `try` statements
Diffstat (limited to 'src/stage1/ir.cpp')
-rw-r--r--src/stage1/ir.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/stage1/ir.cpp b/src/stage1/ir.cpp
index ebda9b88f6..2ec615f6b4 100644
--- a/src/stage1/ir.cpp
+++ b/src/stage1/ir.cpp
@@ -20102,7 +20102,7 @@ static IrInstGen *ir_analyze_store_ptr(IrAnalyze *ira, IrInst* source_instr,
if (uncasted_value->value->type->id == ZigTypeIdErrorUnion ||
uncasted_value->value->type->id == ZigTypeIdErrorSet)
{
- ir_add_error(ira, source_instr, buf_sprintf("error is discarded"));
+ ir_add_error(ira, source_instr, buf_sprintf("error is discarded. consider using `try`, `catch`, or `if`"));
return ira->codegen->invalid_inst_gen;
}
return ir_const_void(ira, source_instr);
@@ -29492,7 +29492,11 @@ static IrInstGen *ir_analyze_instruction_check_statement_is_void(IrAnalyze *ira,
return ira->codegen->invalid_inst_gen;
if (statement_type->id != ZigTypeIdVoid && statement_type->id != ZigTypeIdUnreachable) {
- ir_add_error(ira, &instruction->base.base, buf_sprintf("expression value is ignored"));
+ if(statement_type->id == ZigTypeIdErrorUnion || statement_type->id == ZigTypeIdErrorSet) {
+ ir_add_error(ira, &instruction->base.base, buf_sprintf("error is ignored. consider using `try`, `catch`, or `if`"));
+ }else{
+ ir_add_error(ira, &instruction->base.base, buf_sprintf("expression value is ignored"));
+ }
}
return ir_const_void(ira, &instruction->base.base);