Skip dead code checks on items that failed typeck
This commit is contained in:
parent
9a8f117d7b
commit
3599c18874
@ -128,7 +128,10 @@ fn lookup_and_handle_method(&mut self, id: hir::HirId) {
|
||||
if let Some(def_id) = self.typeck_results().type_dependent_def_id(id) {
|
||||
self.check_def_id(def_id);
|
||||
} else {
|
||||
bug!("no type-dependent def for method");
|
||||
assert!(
|
||||
self.typeck_results().tainted_by_errors.is_some(),
|
||||
"no type-dependent def for method"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,13 @@
|
||||
//! This test tests two things at once:
|
||||
//! 1. we error if a const evaluation hits the deny-by-default lint limit
|
||||
//! 2. we do not ICE on invalid follow-up code
|
||||
|
||||
// compile-flags: -Z tiny-const-eval-limit
|
||||
|
||||
fn main() {
|
||||
// Tests the Collatz conjecture with an incorrect base case (0 instead of 1).
|
||||
// The value of `n` will loop indefinitely (4 - 2 - 1 - 4).
|
||||
let _ = [(); {
|
||||
let s = [(); {
|
||||
let mut n = 113383; // #20 in https://oeis.org/A006884
|
||||
while n != 0 {
|
||||
//~^ ERROR is taking a long time
|
||||
@ -9,4 +15,6 @@ fn main() {
|
||||
}
|
||||
n
|
||||
}];
|
||||
|
||||
s.nonexistent_method();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: constant evaluation is taking a long time
|
||||
--> $DIR/infinite_loop.rs:6:9
|
||||
--> $DIR/infinite_loop.rs:12:9
|
||||
|
|
||||
LL | / while n != 0 {
|
||||
LL | |
|
||||
@ -10,9 +10,9 @@ LL | | }
|
||||
= note: this lint makes sure the compiler doesn't get stuck due to infinite loops in const eval.
|
||||
If your compilation actually takes a long time, you can safely allow the lint.
|
||||
help: the constant being evaluated
|
||||
--> $DIR/infinite_loop.rs:4:18
|
||||
--> $DIR/infinite_loop.rs:10:18
|
||||
|
|
||||
LL | let _ = [(); {
|
||||
LL | let s = [(); {
|
||||
| __________________^
|
||||
LL | | let mut n = 113383; // #20 in https://oeis.org/A006884
|
||||
LL | | while n != 0 {
|
||||
|
Loading…
Reference in New Issue
Block a user