From 66f13ba80787b652ee4f26669f4f2af99e1f1ea0 Mon Sep 17 00:00:00 2001 From: Shawn Landden Date: Thu, 28 Mar 2019 08:47:47 -0500 Subject: [PATCH] stage1: better error message when comparing against null Closes: #2104 --- src/ir.cpp | 3 ++- test/compile_errors.zig | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ir.cpp b/src/ir.cpp index 3851103c1e..0833bb580c 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -12210,7 +12210,8 @@ static IrInstruction *ir_analyze_bin_op_cmp(IrAnalyze *ira, IrInstructionBinOp * return is_non_null; } } else if (op1->value.type->id == ZigTypeIdNull || op2->value.type->id == ZigTypeIdNull) { - ir_add_error_node(ira, source_node, buf_sprintf("comparison against null can only be done with optionals")); + ir_add_error_node(ira, source_node, buf_sprintf("only optionals (not '%s') can compare to null", + buf_ptr(&(op1->value.type->id == ZigTypeIdNull ? op2->value.type->name : op1->value.type->name)))); return ira->codegen->invalid_instruction; } diff --git a/test/compile_errors.zig b/test/compile_errors.zig index edfb73fc42..2f6ad8fe14 100644 --- a/test/compile_errors.zig +++ b/test/compile_errors.zig @@ -839,7 +839,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { \\ _ = &x == null; \\} , - "tmp.zig:3:12: error: comparison against null can only be done with optionals", + "tmp.zig:3:12: error: only optionals (not '*i32') can compare to null", ); cases.add(