mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 11:07:42 +00:00
Auto merge of #7034 - Jarcho:missing_doc_ice, r=phansch
Fix ICE in `missing_panics_doc` fixes: #7033 changelog: Fix ICE in `missing_panics_doc` while searching in a `const` block
This commit is contained in:
commit
81f99460b1
@ -11,7 +11,7 @@ use rustc_errors::emitter::EmitterWriter;
|
|||||||
use rustc_errors::Handler;
|
use rustc_errors::Handler;
|
||||||
use rustc_hir as hir;
|
use rustc_hir as hir;
|
||||||
use rustc_hir::intravisit::{self, NestedVisitorMap, Visitor};
|
use rustc_hir::intravisit::{self, NestedVisitorMap, Visitor};
|
||||||
use rustc_hir::{Expr, ExprKind, QPath};
|
use rustc_hir::{AnonConst, Expr, ExprKind, QPath};
|
||||||
use rustc_lint::{LateContext, LateLintPass};
|
use rustc_lint::{LateContext, LateLintPass};
|
||||||
use rustc_middle::hir::map::Map;
|
use rustc_middle::hir::map::Map;
|
||||||
use rustc_middle::lint::in_external_macro;
|
use rustc_middle::lint::in_external_macro;
|
||||||
@ -735,6 +735,9 @@ impl<'a, 'tcx> Visitor<'tcx> for FindPanicUnwrap<'a, 'tcx> {
|
|||||||
intravisit::walk_expr(self, expr);
|
intravisit::walk_expr(self, expr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Panics in const blocks will cause compilation to fail.
|
||||||
|
fn visit_anon_const(&mut self, _: &'tcx AnonConst) {}
|
||||||
|
|
||||||
fn nested_visit_map(&mut self) -> NestedVisitorMap<Self::Map> {
|
fn nested_visit_map(&mut self) -> NestedVisitorMap<Self::Map> {
|
||||||
NestedVisitorMap::OnlyBodies(self.cx.tcx.hir())
|
NestedVisitorMap::OnlyBodies(self.cx.tcx.hir())
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
//! This file tests for the `DOC_MARKDOWN` lint.
|
//! This file tests for the `DOC_MARKDOWN` lint.
|
||||||
|
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code, incomplete_features)]
|
||||||
#![warn(clippy::doc_markdown)]
|
#![warn(clippy::doc_markdown)]
|
||||||
#![feature(custom_inner_attributes)]
|
#![feature(custom_inner_attributes, const_generics, const_evaluatable_checked, const_option)]
|
||||||
#![rustfmt::skip]
|
#![rustfmt::skip]
|
||||||
|
|
||||||
/// The foo_bar function does _nothing_. See also foo::bar. (note the dot there)
|
/// The foo_bar function does _nothing_. See also foo::bar. (note the dot there)
|
||||||
@ -202,3 +202,20 @@ fn issue_2343() {}
|
|||||||
/// This should not cause an ICE:
|
/// This should not cause an ICE:
|
||||||
/// __|_ _|__||_|
|
/// __|_ _|__||_|
|
||||||
fn pulldown_cmark_crash() {}
|
fn pulldown_cmark_crash() {}
|
||||||
|
|
||||||
|
// issue #7033 - const_evaluatable_checked ICE
|
||||||
|
struct S<T, const N: usize>
|
||||||
|
where [(); N.checked_next_power_of_two().unwrap()]: {
|
||||||
|
arr: [T; N.checked_next_power_of_two().unwrap()],
|
||||||
|
n: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: Copy + Default, const N: usize> S<T, N>
|
||||||
|
where [(); N.checked_next_power_of_two().unwrap()]: {
|
||||||
|
fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
arr: [T::default(); N.checked_next_power_of_two().unwrap()],
|
||||||
|
n: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user