about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-01-18 14:36:41 -0800
committerbors <bors@rust-lang.org>2014-01-18 14:36:41 -0800
commitd0f6ef080bb69ce4370c04c92cc92b9a860e5725 (patch)
treeb1e4f994a14f67195492feed70a03ed190c60069 /src/rustllvm/RustWrapper.cpp
parentb5a110c7feed3a87a0daee1e829fa0cb03026a4e (diff)
parent27843133448df3315af1a07dc6700d7754709a97 (diff)
downloadrust-d0f6ef080bb69ce4370c04c92cc92b9a860e5725.tar.gz
rust-d0f6ef080bb69ce4370c04c92cc92b9a860e5725.zip
auto merge of #11620 : alexcrichton/rust/rustc-silent, r=brson
This commit re-works how the monitor() function works and how it both receives
and transmits errors. There are a few cases in which the compiler can abort:

1. A normal compiler error. In this case, the compiler raises a FatalError as
   the failure value of the task. If this happens, then the monitor task does
   nothing. It ignores all stderr output of the child task and it also
   suppresses the failure message of the main task itself. This means that on a
   normal compiler error just the error message itself is printed.

2. A normal internal compiler error. These are invoked from sess.span_bug() and
   friends. In these cases, they follow the same path (raising a FatalError),
   but they will also print an ICE message which has a URL to go report a bug.

3. An actual compiler bug. This happens whenever anything calls fail!() instead
   of going through the session itself. In this case, we print out stuff about
   RUST_LOG=2 and we by default capture all stderr and print via warn!() so it's
   only printed out with the RUST_LOG var set.
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions