Skip to content

Commit a5a039b

Browse files
committed
Merge from rustc
2 parents b7c2745 + 820f06b commit a5a039b

File tree

160 files changed

+1350
-1206
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

160 files changed

+1350
-1206
lines changed

compiler/rustc_abi/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#![cfg_attr(feature = "nightly", feature(step_trait))]
22
#![cfg_attr(feature = "nightly", allow(internal_features))]
3-
#![cfg_attr(all(not(bootstrap), feature = "nightly"), doc(rust_logo))]
4-
#![cfg_attr(all(not(bootstrap), feature = "nightly"), feature(rustdoc_internals))]
3+
#![cfg_attr(feature = "nightly", doc(rust_logo))]
4+
#![cfg_attr(feature = "nightly", feature(rustdoc_internals))]
55

66
use std::fmt;
77
use std::num::{NonZeroUsize, ParseIntError};

compiler/rustc_arena/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/",
1212
test(no_crate_inject, attr(deny(warnings)))
1313
)]
14-
#![cfg_attr(not(bootstrap), doc(rust_logo))]
15-
#![cfg_attr(not(bootstrap), feature(rustdoc_internals))]
14+
#![doc(rust_logo)]
15+
#![feature(rustdoc_internals)]
1616
#![feature(core_intrinsics)]
1717
#![feature(dropck_eyepatch)]
1818
#![feature(new_uninit)]

compiler/rustc_ast/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/",
99
test(attr(deny(warnings)))
1010
)]
11-
#![cfg_attr(not(bootstrap), doc(rust_logo))]
12-
#![cfg_attr(not(bootstrap), allow(internal_features))]
13-
#![cfg_attr(not(bootstrap), feature(rustdoc_internals))]
11+
#![doc(rust_logo)]
12+
#![allow(internal_features)]
13+
#![feature(rustdoc_internals)]
1414
#![feature(associated_type_bounds)]
1515
#![feature(box_patterns)]
1616
#![feature(const_trait_impl)]

compiler/rustc_ast_lowering/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
//! get confused if the spans from leaf AST nodes occur in multiple places
3131
//! in the HIR, especially for multiple identifiers.
3232
33-
#![cfg_attr(not(bootstrap), allow(internal_features))]
34-
#![cfg_attr(not(bootstrap), feature(rustdoc_internals))]
35-
#![cfg_attr(not(bootstrap), doc(rust_logo))]
33+
#![allow(internal_features)]
34+
#![feature(rustdoc_internals)]
35+
#![doc(rust_logo)]
3636
#![feature(box_patterns)]
3737
#![feature(let_chains)]
3838
#![feature(never_type)]

compiler/rustc_ast_passes/src/ast_validation.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,8 +1213,12 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
12131213
DisallowTildeConstContext::Fn(FnKind::Fn(_, ident, ..)) => {
12141214
errors::TildeConstReason::Function { ident: ident.span }
12151215
}
1216-
&DisallowTildeConstContext::Trait(span) => errors::TildeConstReason::Trait { span },
1217-
&DisallowTildeConstContext::Impl(span) => errors::TildeConstReason::Impl { span },
1216+
&DisallowTildeConstContext::Trait(span) => {
1217+
errors::TildeConstReason::Trait { span }
1218+
}
1219+
&DisallowTildeConstContext::Impl(span) => {
1220+
errors::TildeConstReason::Impl { span }
1221+
}
12181222
DisallowTildeConstContext::TraitObject => {
12191223
errors::TildeConstReason::TraitObject
12201224
}
@@ -1446,9 +1450,7 @@ fn deny_equality_constraints(
14461450
id: rustc_ast::node_id::DUMMY_NODE_ID,
14471451
ident: *ident,
14481452
gen_args,
1449-
kind: AssocConstraintKind::Equality {
1450-
term: predicate.rhs_ty.clone().into(),
1451-
},
1453+
kind: AssocConstraintKind::Equality { term: predicate.rhs_ty.clone().into() },
14521454
span: ident.span,
14531455
});
14541456
// Add `<Bar = RhsTy>` to `Foo`.
@@ -1461,11 +1463,7 @@ fn deny_equality_constraints(
14611463
},
14621464
empty_args => {
14631465
*empty_args = Some(
1464-
AngleBracketedArgs {
1465-
span: ident.span,
1466-
args: thin_vec![arg],
1467-
}
1468-
.into(),
1466+
AngleBracketedArgs { span: ident.span, args: thin_vec![arg] }.into(),
14691467
);
14701468
}
14711469
}

compiler/rustc_ast_passes/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
//!
55
//! The crate also contains other misc AST visitors, e.g. `node_count` and `show_span`.
66
7-
#![cfg_attr(not(bootstrap), allow(internal_features))]
8-
#![cfg_attr(not(bootstrap), doc(rust_logo))]
9-
#![cfg_attr(not(bootstrap), feature(rustdoc_internals))]
7+
#![allow(internal_features)]
8+
#![doc(rust_logo)]
9+
#![feature(rustdoc_internals)]
1010
#![feature(box_patterns)]
1111
#![feature(if_let_guard)]
1212
#![feature(iter_is_partitioned)]

compiler/rustc_ast_pretty/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#![cfg_attr(not(bootstrap), allow(internal_features))]
2-
#![cfg_attr(not(bootstrap), feature(rustdoc_internals))]
3-
#![cfg_attr(not(bootstrap), doc(rust_logo))]
1+
#![allow(internal_features)]
2+
#![feature(rustdoc_internals)]
3+
#![doc(rust_logo)]
44
#![deny(rustc::untranslatable_diagnostic)]
55
#![deny(rustc::diagnostic_outside_of_impl)]
66
#![feature(associated_type_bounds)]

compiler/rustc_attr/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
//! The goal is to move the definition of `MetaItem` and things that don't need to be in `syntax`
55
//! to this crate.
66
7-
#![cfg_attr(not(bootstrap), allow(internal_features))]
8-
#![cfg_attr(not(bootstrap), feature(rustdoc_internals))]
9-
#![cfg_attr(not(bootstrap), doc(rust_logo))]
7+
#![allow(internal_features)]
8+
#![feature(rustdoc_internals)]
9+
#![doc(rust_logo)]
1010
#![feature(let_chains)]
1111
#![deny(rustc::untranslatable_diagnostic)]
1212
#![deny(rustc::diagnostic_outside_of_impl)]

compiler/rustc_baked_icu_data/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
//! --cldr-tag latest --icuexport-tag latest -o src/data
2121
//! ```
2222
23-
#![cfg_attr(not(bootstrap), allow(internal_features))]
24-
#![cfg_attr(not(bootstrap), feature(rustdoc_internals))]
25-
#![cfg_attr(not(bootstrap), doc(rust_logo))]
23+
#![allow(internal_features)]
24+
#![feature(rustdoc_internals)]
25+
#![doc(rust_logo)]
2626
#![allow(elided_lifetimes_in_paths)]
2727

2828
mod data {

compiler/rustc_borrowck/src/diagnostics/bound_region_errors.rs

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ use rustc_infer::infer::RegionVariableOrigin;
1010
use rustc_infer::infer::{InferCtxt, RegionResolutionError, SubregionOrigin, TyCtxtInferExt as _};
1111
use rustc_infer::traits::ObligationCause;
1212
use rustc_middle::ty::error::TypeError;
13+
use rustc_middle::ty::RePlaceholder;
14+
use rustc_middle::ty::Region;
1315
use rustc_middle::ty::RegionVid;
1416
use rustc_middle::ty::UniverseIndex;
1517
use rustc_middle::ty::{self, Ty, TyCtxt, TypeFoldable};
@@ -205,6 +207,8 @@ trait TypeOpInfo<'tcx> {
205207
let span = cause.span;
206208
let nice_error = self.nice_error(mbcx, cause, placeholder_region, error_region);
207209

210+
debug!(?nice_error);
211+
208212
if let Some(nice_error) = nice_error {
209213
mbcx.buffer_error(nice_error);
210214
} else {
@@ -404,19 +408,41 @@ fn try_extract_error_from_region_constraints<'tcx>(
404408
mut region_var_origin: impl FnMut(RegionVid) -> RegionVariableOrigin,
405409
mut universe_of_region: impl FnMut(RegionVid) -> UniverseIndex,
406410
) -> Option<DiagnosticBuilder<'tcx, ErrorGuaranteed>> {
407-
let (sub_region, cause) =
408-
region_constraints.constraints.iter().find_map(|(constraint, cause)| {
409-
match *constraint {
410-
Constraint::RegSubReg(sub, sup) if sup == placeholder_region && sup != sub => {
411-
Some((sub, cause.clone()))
412-
}
413-
// FIXME: Should this check the universe of the var?
414-
Constraint::VarSubReg(vid, sup) if sup == placeholder_region => {
415-
Some((ty::Region::new_var(infcx.tcx, vid), cause.clone()))
416-
}
417-
_ => None,
411+
let matches =
412+
|a_region: Region<'tcx>, b_region: Region<'tcx>| match (a_region.kind(), b_region.kind()) {
413+
(RePlaceholder(a_p), RePlaceholder(b_p)) => a_p.bound == b_p.bound,
414+
_ => a_region == b_region,
415+
};
416+
let check = |constraint: &Constraint<'tcx>, cause: &SubregionOrigin<'tcx>, exact| {
417+
match *constraint {
418+
Constraint::RegSubReg(sub, sup)
419+
if ((exact && sup == placeholder_region)
420+
|| (!exact && matches(sup, placeholder_region)))
421+
&& sup != sub =>
422+
{
423+
Some((sub, cause.clone()))
424+
}
425+
// FIXME: Should this check the universe of the var?
426+
Constraint::VarSubReg(vid, sup)
427+
if ((exact && sup == placeholder_region)
428+
|| (!exact && matches(sup, placeholder_region))) =>
429+
{
430+
Some((ty::Region::new_var(infcx.tcx, vid), cause.clone()))
418431
}
419-
})?;
432+
_ => None,
433+
}
434+
};
435+
let mut info = region_constraints
436+
.constraints
437+
.iter()
438+
.find_map(|(constraint, cause)| check(constraint, cause, true));
439+
if info.is_none() {
440+
info = region_constraints
441+
.constraints
442+
.iter()
443+
.find_map(|(constraint, cause)| check(constraint, cause, false));
444+
}
445+
let (sub_region, cause) = info?;
420446

421447
debug!(?sub_region, "cause = {:#?}", cause);
422448
let error = match (error_region, *sub_region) {

0 commit comments

Comments
 (0)