///
/// If the given `error_format` is `ErrorOutputType::Json` and no `SourceMap` is given, a new one
/// will be created for the handler.
-pub fn new_handler(error_format: ErrorOutputType, source_map: Option<Lrc<source_map::SourceMap>>)
- -> errors::Handler
-{
+pub fn new_handler(error_format: ErrorOutputType,
+ source_map: Option<Lrc<source_map::SourceMap>>,
+ treat_err_as_bug: bool,
+) -> errors::Handler {
// rustdoc doesn't override (or allow to override) anything from this that is relevant here, so
// stick to the defaults
let sessopts = Options::default();
emitter,
errors::HandlerFlags {
can_emit_warnings: true,
- treat_err_as_bug: false,
+ treat_err_as_bug,
report_delayed_bugs: false,
external_macro_backtrace: false,
..Default::default()
lint_cap: Option<lint::Level>,
describe_lints: bool,
mut manual_passes: Vec<String>,
- mut default_passes: passes::DefaultPassOption)
- -> (clean::Crate, RenderInfo, Vec<String>)
-{
+ mut default_passes: passes::DefaultPassOption,
+ treat_err_as_bug: bool,
+) -> (clean::Crate, RenderInfo, Vec<String>) {
// Parse, resolve, and typecheck the given crate.
let cpath = match input {
};
driver::spawn_thread_pool(sessopts, move |sessopts| {
let source_map = Lrc::new(source_map::SourceMap::new(sessopts.file_path_mapping()));
- let diagnostic_handler = new_handler(error_format, Some(source_map.clone()));
+ let diagnostic_handler = new_handler(error_format,
+ Some(source_map.clone()),
+ treat_err_as_bug);
let mut sess = session::build_session_(
sessopts, cpath, diagnostic_handler, source_map,
`short` (instead was `{}`)", arg));
}
};
+ let treat_err_as_bug = matches.opt_strs("Z").iter().any(|x| {
+ *x == "treat-err-as-bug"
+ });
- let diag = core::new_handler(error_format, None);
+ let diag = core::new_handler(error_format, None, treat_err_as_bug);
// check for deprecated options
check_deprecated_options(&matches, &diag);
let res = acquire_input(PathBuf::from(input), externs, edition, cg, &matches, error_format,
move |out| {
let Output { krate, passes, renderinfo } = out;
- let diag = core::new_handler(error_format, None);
+ let diag = core::new_handler(error_format, None, treat_err_as_bug);
info!("going to format");
match output_format.as_ref().map(|s| &**s) {
Some("html") | None => {
let force_unstable_if_unmarked = matches.opt_strs("Z").iter().any(|x| {
*x == "force-unstable-if-unmarked"
});
+ let treat_err_as_bug = matches.opt_strs("Z").iter().any(|x| {
+ *x == "treat-err-as-bug"
+ });
let (lint_opts, describe_lints, lint_cap) = get_cmd_lint_options(matches, error_format);
core::run_core(paths, cfgs, externs, Input::File(cratefile), triple, maybe_sysroot,
display_warnings, crate_name.clone(),
force_unstable_if_unmarked, edition, cg, error_format,
- lint_opts, lint_cap, describe_lints, manual_passes, default_passes);
+ lint_opts, lint_cap, describe_lints, manual_passes, default_passes,
+ treat_err_as_bug);
info!("finished with rustc");
--- /dev/null
+// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// compile-flags: -Ztreat-err-as-bug --error-format=human
+
+pub fn foo() {
--- /dev/null
+error: this file contains an un-closed delimiter
+ --> $DIR/treat-err-as-bug.rs:13:16
+ |
+13 | pub fn foo() {
+ | - ^
+ | |
+ | un-closed delimiter
+
+thread '<unnamed>' panicked at 'encountered error with `-Z treat_err_as_bug', librustc_errors/lib.rs:486:13
+note: Run with `RUST_BACKTRACE=1` for a backtrace.
+
+error: internal compiler error: unexpected panic
+
+note: the compiler unexpectedly panicked. this is a bug.
+
+note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
+
+note: rustc 1.30.0-dev running on x86_64-apple-darwin
+
+note: compiler flags: -Z ui-testing -Z unstable-options -Z treat-err-as-bug
+