Skip to content

Commit f8e4ac0

Browse files
committed
Auto merge of rust-lang#127728 - matthiaskrgr:rollup-ercdbjd, r=matthiaskrgr
Rollup of 5 pull requests Successful merges: - rust-lang#127273 (Fix `DebugParser`.) - rust-lang#127587 (Report usage of lib features in ast validation) - rust-lang#127592 (doc: Suggest `str::repeat` over `iter::repeat().take().collect()`) - rust-lang#127630 (Remove lang feature for type ascription (since it's a lib feature now)) - rust-lang#127711 (Add regression test for a gce + effects ICE) r? `@ghost` `@rustbot` modify labels: rollup
2 parents 0968298 + f19cb0b commit f8e4ac0

File tree

11 files changed

+406
-93
lines changed

11 files changed

+406
-93
lines changed

compiler/rustc_ast_passes/src/feature_gate.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -607,8 +607,7 @@ fn maybe_stage_features(sess: &Session, features: &Features, krate: &ast::Crate)
607607
// does not check the same for lib features unless there's at least one
608608
// declared lang feature
609609
if !sess.opts.unstable_features.is_nightly_build() {
610-
let lang_features = &features.declared_lang_features;
611-
if lang_features.len() == 0 {
610+
if features.declared_features.is_empty() {
612611
return;
613612
}
614613
for attr in krate.attrs.iter().filter(|attr| attr.has_name(sym::feature)) {
@@ -624,7 +623,8 @@ fn maybe_stage_features(sess: &Session, features: &Features, krate: &ast::Crate)
624623
attr.meta_item_list().into_iter().flatten().flat_map(|nested| nested.ident())
625624
{
626625
let name = ident.name;
627-
let stable_since = lang_features
626+
let stable_since = features
627+
.declared_lang_features
628628
.iter()
629629
.flat_map(|&(feature, _, since)| if feature == name { since } else { None })
630630
.next();

compiler/rustc_codegen_gcc/example/mini_core.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#![feature(
2-
no_core, lang_items, intrinsics, unboxed_closures, type_ascription, extern_types,
2+
no_core, lang_items, intrinsics, unboxed_closures, extern_types,
33
decl_macro, rustc_attrs, transparent_unions, auto_traits, freeze_impls,
44
thread_local
55
)]

compiler/rustc_feature/src/unstable.rs

-2
Original file line numberDiff line numberDiff line change
@@ -621,8 +621,6 @@ declare_features! (
621621
(unstable, try_blocks, "1.29.0", Some(31436)),
622622
/// Allows `impl Trait` to be used inside type aliases (RFC 2515).
623623
(unstable, type_alias_impl_trait, "1.38.0", Some(63063)),
624-
/// Allows the use of type ascription in expressions.
625-
(unstable, type_ascription, "1.6.0", Some(23416)),
626624
/// Allows creation of instances of a struct by moving fields that have
627625
/// not changed from prior instances of the same struct (RFC #2528)
628626
(unstable, type_changing_struct_update, "1.58.0", Some(86555)),

compiler/rustc_parse/src/parser/mod.rs

+10-8
Original file line numberDiff line numberDiff line change
@@ -1537,14 +1537,16 @@ impl<'a> Parser<'a> {
15371537

15381538
// we don't need N spans, but we want at least one, so print all of prev_token
15391539
dbg_fmt.field("prev_token", &parser.prev_token);
1540-
// make it easier to peek farther ahead by taking TokenKinds only until EOF
1541-
let tokens = (0..*lookahead)
1542-
.map(|i| parser.look_ahead(i, |tok| tok.kind.clone()))
1543-
.scan(parser.prev_token == TokenKind::Eof, |eof, tok| {
1544-
let current = eof.then_some(tok.clone()); // include a trailing EOF token
1545-
*eof |= &tok == &TokenKind::Eof;
1546-
current
1547-
});
1540+
let mut tokens = vec![];
1541+
for i in 0..*lookahead {
1542+
let tok = parser.look_ahead(i, |tok| tok.kind.clone());
1543+
let is_eof = tok == TokenKind::Eof;
1544+
tokens.push(tok);
1545+
if is_eof {
1546+
// Don't look ahead past EOF.
1547+
break;
1548+
}
1549+
}
15481550
dbg_fmt.field_with("tokens", |field| field.debug_list().entries(tokens).finish());
15491551
dbg_fmt.field("approx_token_stream_pos", &parser.num_bump_calls);
15501552

0 commit comments

Comments
 (0)