Skip to content

Commit

Permalink
Auto merge of #90000 - matthiaskrgr:rollup-vj7wwur, r=matthiaskrgr
Browse files Browse the repository at this point in the history
Rollup of 8 pull requests

Successful merges:

 - #89950 (bootstrap: tweak verbosity settings)
 - #89965 (Fix ICE with `let...else` and `ref mut`)
 - #89974 (Nicer error message if the user attempts to do let...else if)
 - #89987 (Check implementing type for `#[doc(hidden)]`)
 - #89989 (rustdoc: Add static size assertion for `clean::Type`)
 - #89990 (rustc_span: `Ident::invalid` -> `Ident::empty`)
 - #89993 (Remove dead code from `compiletest::json`)
 - #89996 (Bump backtrace)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
  • Loading branch information
bors committed Oct 18, 2021
2 parents 5e02151 + 2724b00 commit 5dab47d
Show file tree
Hide file tree
Showing 34 changed files with 146 additions and 54 deletions.
6 changes: 3 additions & 3 deletions compiler/rustc_ast/src/attr/mod.rs
Expand Up @@ -62,7 +62,7 @@ impl NestedMetaItem {
self.meta_item().and_then(|meta_item| meta_item.ident())
}
pub fn name_or_empty(&self) -> Symbol {
self.ident().unwrap_or_else(Ident::invalid).name
self.ident().unwrap_or_else(Ident::empty).name
}

/// Gets the string value if `self` is a `MetaItem` and the `MetaItem` is a
Expand Down Expand Up @@ -131,7 +131,7 @@ impl Attribute {
}
}
pub fn name_or_empty(&self) -> Symbol {
self.ident().unwrap_or_else(Ident::invalid).name
self.ident().unwrap_or_else(Ident::empty).name
}

pub fn value_str(&self) -> Option<Symbol> {
Expand Down Expand Up @@ -166,7 +166,7 @@ impl MetaItem {
if self.path.segments.len() == 1 { Some(self.path.segments[0].ident) } else { None }
}
pub fn name_or_empty(&self) -> Symbol {
self.ident().unwrap_or_else(Ident::invalid).name
self.ident().unwrap_or_else(Ident::empty).name
}

// Example:
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_ast/src/mut_visit.rs
Expand Up @@ -1060,7 +1060,7 @@ pub fn noop_visit_crate<T: MutVisitor>(krate: &mut Crate, vis: &mut T) {
let item_vis =
Visibility { kind: VisibilityKind::Public, span: span.shrink_to_lo(), tokens: None };
let item = P(Item {
ident: Ident::invalid(),
ident: Ident::empty(),
attrs,
id: DUMMY_NODE_ID,
vis: item_vis,
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_ast_lowering/src/lib.rs
Expand Up @@ -1435,7 +1435,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
trace!("registering opaque type with id {:#?}", opaque_ty_id);
let opaque_ty_item = hir::Item {
def_id: opaque_ty_id,
ident: Ident::invalid(),
ident: Ident::empty(),
kind: opaque_ty_item_kind,
vis: respan(self.lower_span(span.shrink_to_lo()), hir::VisibilityKind::Inherited),
span: self.lower_span(opaque_ty_span),
Expand Down
16 changes: 8 additions & 8 deletions compiler/rustc_borrowck/src/diagnostics/mutability_errors.rs
Expand Up @@ -45,12 +45,12 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
let item_msg;
let reason;
let mut opt_source = None;
let access_place_desc = self.describe_place(access_place.as_ref());
let access_place_desc = self.describe_any_place(access_place.as_ref());
debug!("report_mutability_error: access_place_desc={:?}", access_place_desc);

match the_place_err {
PlaceRef { local, projection: [] } => {
item_msg = format!("`{}`", access_place_desc.unwrap());
item_msg = access_place_desc;
if access_place.as_local().is_some() {
reason = ", as it is not declared as mutable".to_string();
} else {
Expand Down Expand Up @@ -83,7 +83,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
// If we deref an immutable ref then the suggestion here doesn't help.
return;
} else {
item_msg = format!("`{}`", access_place_desc.unwrap());
item_msg = access_place_desc;
if self.is_upvar_field_projection(access_place.as_ref()).is_some() {
reason = ", as it is not declared as mutable".to_string();
} else {
Expand All @@ -96,17 +96,17 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
PlaceRef { local, projection: [ProjectionElem::Deref] }
if self.body.local_decls[local].is_ref_for_guard() =>
{
item_msg = format!("`{}`", access_place_desc.unwrap());
item_msg = access_place_desc;
reason = ", as it is immutable for the pattern guard".to_string();
}
PlaceRef { local, projection: [ProjectionElem::Deref] }
if self.body.local_decls[local].is_ref_to_static() =>
{
if access_place.projection.len() == 1 {
item_msg = format!("immutable static item `{}`", access_place_desc.unwrap());
item_msg = format!("immutable static item {}", access_place_desc);
reason = String::new();
} else {
item_msg = format!("`{}`", access_place_desc.unwrap());
item_msg = access_place_desc;
let local_info = &self.body.local_decls[local].local_info;
if let Some(box LocalInfo::StaticRef { def_id, .. }) = *local_info {
let static_name = &self.infcx.tcx.item_name(def_id);
Expand All @@ -121,7 +121,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
&& proj_base.is_empty()
&& !self.upvars.is_empty()
{
item_msg = format!("`{}`", access_place_desc.unwrap());
item_msg = access_place_desc;
debug_assert!(
self.body.local_decls[ty::CAPTURE_STRUCT_LOCAL].ty.is_region_ptr()
);
Expand All @@ -147,7 +147,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
});
let pointer_type = source.describe_for_immutable_place(self.infcx.tcx);
opt_source = Some(source);
if let Some(desc) = access_place_desc {
if let Some(desc) = self.describe_place(access_place.as_ref()) {
item_msg = format!("`{}`", desc);
reason = match error_access {
AccessKind::Mutate => format!(", which is behind {}", pointer_type),
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_builtin_macros/src/asm.rs
Expand Up @@ -812,7 +812,7 @@ pub fn expand_global_asm<'cx>(
Ok(args) => {
if let Some(inline_asm) = expand_preparsed_asm(ecx, args) {
MacEager::items(smallvec![P(ast::Item {
ident: Ident::invalid(),
ident: Ident::empty(),
attrs: Vec::new(),
id: ast::DUMMY_NODE_ID,
kind: ast::ItemKind::GlobalAsm(inline_asm),
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_builtin_macros/src/derive.rs
Expand Up @@ -85,7 +85,7 @@ impl MultiItemModifier for Expander {
fn dummy_annotatable() -> Annotatable {
Annotatable::GenericParam(ast::GenericParam {
id: ast::DUMMY_NODE_ID,
ident: Ident::invalid(),
ident: Ident::empty(),
attrs: Default::default(),
bounds: Default::default(),
is_placeholder: false,
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_builtin_macros/src/deriving/generic/mod.rs
Expand Up @@ -724,7 +724,7 @@ impl<'a> TraitDef<'a> {

cx.item(
self.span,
Ident::invalid(),
Ident::empty(),
a,
ast::ItemKind::Impl(Box::new(ast::ImplKind {
unsafety,
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_builtin_macros/src/deriving/mod.rs
Expand Up @@ -178,7 +178,7 @@ fn inject_impl_of_structural_trait(

let newitem = cx.item(
span,
Ident::invalid(),
Ident::empty(),
attrs,
ItemKind::Impl(Box::new(ImplKind {
unsafety: ast::Unsafe::No,
Expand Down
Expand Up @@ -77,7 +77,7 @@ pub fn inject(

let use_item = cx.item(
span,
Ident::invalid(),
Ident::empty(),
vec![cx.attribute(cx.meta_word(span, sym::prelude_import))],
ast::ItemKind::Use(ast::UseTree {
prefix: cx.path(span, import_path),
Expand Down
6 changes: 3 additions & 3 deletions compiler/rustc_expand/src/expand.rs
Expand Up @@ -383,7 +383,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
Unsafe::No,
ModKind::Loaded(krate.items, Inline::Yes, krate.span)
),
ident: Ident::invalid(),
ident: Ident::empty(),
id: ast::DUMMY_NODE_ID,
vis: ast::Visibility {
span: krate.span.shrink_to_lo(),
Expand Down Expand Up @@ -1426,7 +1426,7 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
_ => unreachable!(),
})
}
ast::ItemKind::Mod(_, ref mut mod_kind) if ident != Ident::invalid() => {
ast::ItemKind::Mod(_, ref mut mod_kind) if ident != Ident::empty() => {
let (file_path, dir_path, dir_ownership) = match mod_kind {
ModKind::Loaded(_, inline, _) => {
// Inline `mod foo { ... }`, but we still need to push directories.
Expand Down Expand Up @@ -1508,7 +1508,7 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
_ => {
item.attrs = attrs;
// The crate root is special - don't assign an ID to it.
if !(matches!(item.kind, ast::ItemKind::Mod(..)) && ident == Ident::invalid()) {
if !(matches!(item.kind, ast::ItemKind::Mod(..)) && ident == Ident::empty()) {
assign_id!(self, &mut item.id, || noop_flat_map_item(item, self))
} else {
noop_flat_map_item(item, self)
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_expand/src/mbe/quoted.rs
Expand Up @@ -204,7 +204,7 @@ fn parse_tree(
pprust::token_to_string(&token),
);
sess.span_diagnostic.span_err(token.span, &msg);
TokenTree::MetaVar(token.span, Ident::invalid())
TokenTree::MetaVar(token.span, Ident::empty())
}

// There are no more tokens. Just return the `$` we already have.
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_expand/src/placeholders.rs
Expand Up @@ -23,7 +23,7 @@ pub fn placeholder(
}
}

let ident = Ident::invalid();
let ident = Ident::empty();
let attrs = Vec::new();
let vis = vis.unwrap_or(ast::Visibility {
span: DUMMY_SP,
Expand Down
6 changes: 3 additions & 3 deletions compiler/rustc_hir/src/hir.rs
Expand Up @@ -121,7 +121,7 @@ impl LifetimeName {
match *self {
LifetimeName::ImplicitObjectLifetimeDefault
| LifetimeName::Implicit
| LifetimeName::Error => Ident::invalid(),
| LifetimeName::Error => Ident::empty(),
LifetimeName::Underscore => Ident::with_dummy_span(kw::UnderscoreLifetime),
LifetimeName::Static => Ident::with_dummy_span(kw::StaticLifetime),
LifetimeName::Param(param_name) => param_name.ident(),
Expand Down Expand Up @@ -233,7 +233,7 @@ impl<'hir> PathSegment<'hir> {
}

pub fn invalid() -> Self {
Self::from_ident(Ident::invalid())
Self::from_ident(Ident::empty())
}

pub fn args(&self) -> &GenericArgs<'hir> {
Expand Down Expand Up @@ -310,7 +310,7 @@ impl GenericArg<'_> {
}

pub fn is_synthetic(&self) -> bool {
matches!(self, GenericArg::Lifetime(lifetime) if lifetime.name.ident() == Ident::invalid())
matches!(self, GenericArg::Lifetime(lifetime) if lifetime.name.ident() == Ident::empty())
}

pub fn descr(&self) -> &'static str {
Expand Down
18 changes: 18 additions & 0 deletions compiler/rustc_lint/src/builtin.rs
Expand Up @@ -657,6 +657,24 @@ impl<'tcx> LateLintPass<'tcx> for MissingDoc {
return;
}

// If the method is an impl for an item with docs_hidden, don't doc.
if method_context(cx, impl_item.hir_id()) == MethodLateContext::PlainImpl {
let parent = cx.tcx.hir().get_parent_did(impl_item.hir_id());
let impl_ty = cx.tcx.type_of(parent);
let outerdef = match impl_ty.kind() {
ty::Adt(def, _) => Some(def.did),
ty::Foreign(def_id) => Some(*def_id),
_ => None,
};
let is_hidden = match outerdef {
Some(id) => cx.tcx.is_doc_hidden(id),
None => false,
};
if is_hidden {
return;
}
}

let (article, desc) = cx.tcx.article_and_description(impl_item.def_id.to_def_id());
self.check_missing_docs_attrs(cx, impl_item.def_id, impl_item.span, article, desc);
}
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_middle/src/hir/map/mod.rs
Expand Up @@ -443,7 +443,7 @@ impl<'hir> Map<'hir> {
pub fn body_param_names(&self, id: BodyId) -> impl Iterator<Item = Ident> + 'hir {
self.body(id).params.iter().map(|arg| match arg.pat.kind {
PatKind::Binding(_, _, ident, _) => ident,
_ => Ident::new(kw::Empty, rustc_span::DUMMY_SP),
_ => Ident::empty(),
})
}

Expand Down
8 changes: 4 additions & 4 deletions compiler/rustc_parse/src/parser/item.rs
Expand Up @@ -216,7 +216,7 @@ impl<'a> Parser<'a> {
return Err(e);
}

(Ident::invalid(), ItemKind::Use(tree))
(Ident::empty(), ItemKind::Use(tree))
} else if self.check_fn_front_matter(def_final) {
// FUNCTION ITEM
let (ident, sig, generics, body) = self.parse_fn(attrs, req_name, lo)?;
Expand Down Expand Up @@ -287,7 +287,7 @@ impl<'a> Parser<'a> {
return Ok(None);
} else if macros_allowed && self.check_path() {
// MACRO INVOCATION ITEM
(Ident::invalid(), ItemKind::MacCall(self.parse_item_macro(vis)?))
(Ident::empty(), ItemKind::MacCall(self.parse_item_macro(vis)?))
} else {
return Ok(None);
};
Expand Down Expand Up @@ -586,7 +586,7 @@ impl<'a> Parser<'a> {
}
};

Ok((Ident::invalid(), item_kind))
Ok((Ident::empty(), item_kind))
}

fn parse_item_list<T>(
Expand Down Expand Up @@ -933,7 +933,7 @@ impl<'a> Parser<'a> {
let abi = self.parse_abi(); // ABI?
let items = self.parse_item_list(attrs, |p| p.parse_foreign_item(ForceCollect::No))?;
let module = ast::ForeignMod { unsafety, abi, items };
Ok((Ident::invalid(), ItemKind::ForeignMod(module)))
Ok((Ident::empty(), ItemKind::ForeignMod(module)))
}

/// Parses a foreign item (one in an `extern { ... }` block).
Expand Down
21 changes: 16 additions & 5 deletions compiler/rustc_parse/src/parser/stmt.rs
Expand Up @@ -16,7 +16,7 @@ use rustc_ast::{
};
use rustc_ast::{Block, BlockCheckMode, Expr, ExprKind, Local, Stmt};
use rustc_ast::{StmtKind, DUMMY_NODE_ID};
use rustc_errors::{Applicability, PResult};
use rustc_errors::{Applicability, DiagnosticBuilder, PResult};
use rustc_span::source_map::{BytePos, Span};
use rustc_span::symbol::{kw, sym};

Expand Down Expand Up @@ -300,6 +300,12 @@ impl<'a> Parser<'a> {
None => LocalKind::Decl,
Some(init) => {
if self.eat_keyword(kw::Else) {
if self.token.is_keyword(kw::If) {
// `let...else if`. Emit the same error that `parse_block()` would,
// but explicitly point out that this pattern is not allowed.
let msg = "conditional `else if` is not supported for `let...else`";
return Err(self.error_block_no_opening_brace_msg(msg));
}
let els = self.parse_block()?;
self.check_let_else_init_bool_expr(&init);
self.check_let_else_init_trailing_brace(&init);
Expand Down Expand Up @@ -392,10 +398,9 @@ impl<'a> Parser<'a> {
Ok(block)
}

fn error_block_no_opening_brace<T>(&mut self) -> PResult<'a, T> {
fn error_block_no_opening_brace_msg(&mut self, msg: &str) -> DiagnosticBuilder<'a> {
let sp = self.token.span;
let tok = super::token_descr(&self.token);
let mut e = self.struct_span_err(sp, &format!("expected `{{`, found {}", tok));
let mut e = self.struct_span_err(sp, msg);
let do_not_suggest_help = self.token.is_keyword(kw::In) || self.token == token::Colon;

// Check to see if the user has written something like
Expand Down Expand Up @@ -435,7 +440,13 @@ impl<'a> Parser<'a> {
_ => {}
}
e.span_label(sp, "expected `{`");
Err(e)
e
}

fn error_block_no_opening_brace<T>(&mut self) -> PResult<'a, T> {
let tok = super::token_descr(&self.token);
let msg = format!("expected `{{`, found {}", tok);
Err(self.error_block_no_opening_brace_msg(&msg))
}

/// Parses a block. Inner attributes are allowed.
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_resolve/src/diagnostics.rs
Expand Up @@ -1327,7 +1327,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
if fst.ident.span.rust_2018() && !fst.ident.is_path_segment_keyword() =>
{
// Insert a placeholder that's later replaced by `self`/`super`/etc.
path.insert(0, Segment::from_ident(Ident::invalid()));
path.insert(0, Segment::from_ident(Ident::empty()));
}
_ => return None,
}
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_resolve/src/imports.rs
Expand Up @@ -978,7 +978,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
// HACK(eddyb) `lint_if_path_starts_with_module` needs at least
// 2 segments, so the `resolve_path` above won't trigger it.
let mut full_path = import.module_path.clone();
full_path.push(Segment::from_ident(Ident::invalid()));
full_path.push(Segment::from_ident(Ident::empty()));
self.r.lint_if_path_starts_with_module(
import.crate_lint(),
&full_path,
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_span/src/symbol.rs
Expand Up @@ -1453,7 +1453,7 @@ impl Ident {
}

#[inline]
pub fn invalid() -> Ident {
pub fn empty() -> Ident {
Ident::with_dummy_span(kw::Empty)
}

Expand Down
2 changes: 1 addition & 1 deletion library/backtrace
2 changes: 1 addition & 1 deletion src/bootstrap/bin/rustc.rs
Expand Up @@ -146,7 +146,7 @@ fn main() {
}

let is_test = args.iter().any(|a| a == "--test");
if verbose > 1 {
if verbose > 2 {
let rust_env_vars =
env::vars().filter(|(k, _)| k.starts_with("RUST") || k.starts_with("CARGO"));
let prefix = if is_test { "[RUSTC-SHIM] rustc --test" } else { "[RUSTC-SHIM] rustc" };
Expand Down
2 changes: 1 addition & 1 deletion src/bootstrap/bootstrap.py
Expand Up @@ -980,7 +980,7 @@ def build_bootstrap(self):
self.cargo()))
args = [self.cargo(), "build", "--manifest-path",
os.path.join(self.rust_root, "src/bootstrap/Cargo.toml")]
for _ in range(1, self.verbose):
for _ in range(0, self.verbose):
args.append("--verbose")
if self.use_locked_deps:
args.append("--locked")
Expand Down

0 comments on commit 5dab47d

Please sign in to comment.