From f300de2963a35047fbd317002efea9b017cbb916 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Tue, 17 May 2011 14:12:49 -0700 Subject: [PATCH] rustc: Make return value checking warnings a little prettier. Also introduce a new "note" diagnostic level. --- src/comp/driver/session.rs | 5 +++++ src/comp/middle/tstate/ck.rs | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/comp/driver/session.rs b/src/comp/driver/session.rs index 1b03567aec5..88d0fcfb6c7 100644 --- a/src/comp/driver/session.rs +++ b/src/comp/driver/session.rs @@ -102,6 +102,11 @@ state obj session(ast::crate_num cnum, emit_diagnostic(sp, msg, "warning", 11u8, cm); } + fn span_note(span sp, str msg) { + // FIXME: Use constants, but rustboot doesn't know how to export them. + emit_diagnostic(sp, msg, "note", 10u8, cm); + } + fn bug(str msg) { log_err #fmt("error: internal compiler error %s", msg); fail; diff --git a/src/comp/middle/tstate/ck.rs b/src/comp/middle/tstate/ck.rs index af2455c9a6e..f9e8416a322 100644 --- a/src/comp/middle/tstate/ck.rs +++ b/src/comp/middle/tstate/ck.rs @@ -141,9 +141,11 @@ fn check_states_against_conditions(&fn_ctxt fcx, &_fn f, &ann a) -> () { /* fcx.ccx.tcx.sess.span_err(f.body.span, "Function " + fcx.name + " may not return. Its declared return type is " + util.common.ty_to_str(*f.decl.output)); */ - log_err("WARNING: Function " + - fcx.name + " may not return. Its declared return type is " - + ty_to_str(*f.decl.output)); + fcx.ccx.tcx.sess.span_warn(f.body.span, "not all control paths " + + "return a value"); + fcx.ccx.tcx.sess.span_note(f.decl.output.span, + "see declared return type of '" + ty_to_str(*f.decl.output) + + "'"); } }