diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs index c1079466e73..8a06314a96b 100644 --- a/src/comp/middle/typeck.rs +++ b/src/comp/middle/typeck.rs @@ -2297,7 +2297,9 @@ fn get_node(f: spanned) -> field { f.node } let msg = #fmt["attempted access of field %s on type %s, but \ no method implementation was found", field, ty_to_str(tcx, t_err)]; - tcx.sess.span_fatal(expr.span, msg); + tcx.sess.span_err(expr.span, msg); + // NB: Adding a bogus type to allow typechecking to continue + write::ty_only_fixup(fcx, id, ty::mk_nil(tcx)); } } } diff --git a/src/test/compile-fail/attempted-access-non-fatal.rs b/src/test/compile-fail/attempted-access-non-fatal.rs new file mode 100644 index 00000000000..7ead10b3f63 --- /dev/null +++ b/src/test/compile-fail/attempted-access-non-fatal.rs @@ -0,0 +1,6 @@ +// Check that bogus field access is non-fatal +fn main() { + let x = 0; + log(debug, x.foo); //! ERROR attempted access of field + log(debug, x.bar); //! ERROR attempted access of field +} \ No newline at end of file