Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 42 pull requests #138086

Closed
wants to merge 127 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
8099510
Fix linking for symbols starting with ?
checkraisefold Sep 25, 2024
784d47b
Add a test
checkraisefold Dec 31, 2024
a4c628c
Significant test improvements
checkraisefold Dec 31, 2024
d45fd5e
Refactor CGU partitioning a little
saethlin Jan 12, 2025
27cf264
Enforce compiler-builtins CGU partitioning in the compiler
saethlin Jan 12, 2025
f81ebfb
Match LLVM behavior more closely
checkraisefold Jan 14, 2025
bf36338
Accept tidy changes
checkraisefold Jan 14, 2025
9c3b53d
Apply tidy suggestion (2)
checkraisefold Jan 14, 2025
e17debb
Test that compiler-builtins is partitioned right
saethlin Jan 12, 2025
dfca140
Add Four Codegen Tests
veera-sivarajan Dec 21, 2024
2c752bc
Undeprecate env::home_dir
arlosi Feb 20, 2025
812b1de
ref_pat_eat_one_layer_2024: add context and examples to the unstable …
dianne Feb 21, 2025
9323ba5
Remove MaybeForgetReturn suggestion
compiler-errors Feb 20, 2025
23c6b93
Don't re-`assume` in `transmute`s that don't change niches
scottmcm Feb 24, 2025
13f3bd1
add `tool::CargoClippy` binary to target sysroot
onur-ozkan Feb 24, 2025
f677bab
add `tool::Cargofmt` binary to target sysroot
onur-ozkan Feb 24, 2025
a7bd4a3
Add DWARF test case for non-C-like `repr128` enums
beetrees Feb 25, 2025
e100fd4
Changed the dependency graph to start preallocated with 128 capacity
FractalFir Feb 27, 2025
fb3aa33
Revert "Derive `Clone` on fewer THIR types."
skius Feb 27, 2025
b5f0c82
Add note to Thir struct about necessity of Clone derive
skius Feb 27, 2025
60bf07a
Adjust `ConstraintGraphDirection` methods.
nnethercote Feb 26, 2025
afc5e1f
Split the `Edges` iterator.
nnethercote Feb 26, 2025
9a0513a
Optimize `Trace`.
nnethercote Feb 26, 2025
b2bb7cc
Fix char count in Display for ByteStr
thaliaarchi Feb 28, 2025
41dd80a
add test to reproduce #137662 (using ty decl macro fragment in an att…
jdonszelmann Feb 26, 2025
50a37ca
miri native-call support: all previously exposed provenance is access…
RalfJung Feb 28, 2025
88f988c
use fixed-width integer types in C code
RalfJung Feb 28, 2025
476b098
adjust Layout debug printing to match the internal field names
RalfJung Feb 28, 2025
91034ad
Do not require that unsafe fields lack drop glue
jswrenn Feb 28, 2025
38b364b
rustc_fluent_macro: use CARGO_CRATE_NAME instead of CARGO_PKG_NAME
lolbinarycat Mar 1, 2025
f36ae5d
Lower BinOp::Cmp to llvm.{s,u}cmp.* intrinsics
DaniPopes Dec 6, 2024
adff091
Check dyn flavor before registering upcast goal on wide pointer cast …
compiler-errors Feb 25, 2025
e7ddda4
Update sccache to 0.10.0
Kobzol Feb 26, 2025
6177f60
Remove `sccache-plus-cl` MSVC hack
Kobzol Mar 1, 2025
649c0ff
Add minimal platform support documentation for powerpc-unknown-linux-…
taiki-e Mar 1, 2025
5a982e7
Use `trunc nuw`+`br` for 0/1 branches even in optimized builds
scottmcm Feb 23, 2025
e213f4b
Improve error message for AsyncFn trait failure for RPIT
compiler-errors Mar 3, 2025
0aacfe9
interpret/provenance_map: consistently use range_is_empty
RalfJung Mar 3, 2025
133705c
[rustdoc] hide item that is not marked as doc(inline) and whose src i…
xizheyin Feb 27, 2025
a23566a
Provide more context on resolve error caused from incorrect RTN
estebank Feb 28, 2025
ab31129
Point of macro expansion from call expr if it involves macro var
compiler-errors Feb 24, 2025
e4dfca8
Point out macro expansion ident in resolver errors too
compiler-errors Feb 24, 2025
0607246
Fix associated type errors too
compiler-errors Feb 24, 2025
09e5846
Also note struct access, and fix macro expansion from foreign crates
compiler-errors Feb 24, 2025
69c4651
ci: use ubuntu 24 on arm large runner
marcoieni Mar 4, 2025
da3e736
Clarify why InhabitedPredicate::instantiate_opt exists
meithecatte Feb 28, 2025
a3d63fb
InhabitedPredicate: avoid using a wildcard branch
meithecatte Mar 3, 2025
3d62b27
Ensure that negative auto impls are always applicable
compiler-errors Feb 28, 2025
05a8060
Make rustdoc tests use always applicable negative auto impls
compiler-errors Feb 28, 2025
7923031
Update `compiler-builtins` to 0.1.151
tgross35 Mar 5, 2025
a4deee5
Prefer a two value enum over bool
oli-obk Feb 12, 2025
fe0a0f4
Avoid having to handle an `Option` in the type system
oli-obk Feb 5, 2025
1632438
Remove the `Option` part of range ends in the HIR
oli-obk Feb 5, 2025
abf8c93
Hide the end of ranges in pretty printing if it's also the maximum of…
oli-obk Feb 5, 2025
056ec72
trim channel value in `get_closest_merge_commit`
onur-ozkan Mar 5, 2025
36efaf8
normalize away `-Wlinker-messages` wrappers from `rust-lld` rmake test
lqd Mar 5, 2025
3dbf3dc
Increase the max. custom try jobs requested to `20`
Kobzol Mar 5, 2025
9c75ed2
triagebot: add `compiler_leads` ad-hoc group
jieyouxu Mar 5, 2025
cb7d687
Implement `&pin const self` and `&pin mut self` sugars
frank-king Jan 19, 2025
52cd874
Simplify `parse_self_param`
frank-king Mar 5, 2025
50d0f99
Simplify `rewrite_explicit_self`
frank-king Mar 5, 2025
c85d3f6
bootstrap and compiletest: Use size_of_val from the prelude instead o…
thaliaarchi Mar 5, 2025
f369271
Construct MIR error body for global_asm correctly
compiler-errors Feb 23, 2025
d9902e5
Exclude global_asm from mir_keys
compiler-errors Feb 23, 2025
181ef54
Use final path segment for diagnostic
compiler-errors Mar 5, 2025
301ab8e
Rollup merge of #137303 - compiler-errors:maybe-forgor, r=cjgillot
compiler-errors Mar 6, 2025
7ac42be
Rollup merge of #137327 - arlosi:home-dir, r=Mark-Simulacrum
compiler-errors Mar 6, 2025
47f092b
Rollup merge of #137358 - dianne:new-match-ergonomics-examples, r=Nad…
compiler-errors Mar 6, 2025
e53763d
Rollup merge of #137502 - compiler-errors:global-asm-aint-mir-body, r…
compiler-errors Mar 6, 2025
147243c
Rollup merge of #137534 - xizheyin:issue-137342, r=GuillaumeGomez
compiler-errors Mar 6, 2025
e6723e0
Rollup merge of #137565 - compiler-errors:macro-ex, r=estebank
compiler-errors Mar 6, 2025
838475c
Rollup merge of #137637 - compiler-errors:dyn-cast-from-dyn-star, r=o…
compiler-errors Mar 6, 2025
ea934e4
Rollup merge of #137643 - beetrees:repr128-dwarf-variant-test, r=jiey…
compiler-errors Mar 6, 2025
2479067
Rollup merge of #137744 - skius:master, r=Nadrieril
compiler-errors Mar 6, 2025
7d5a65f
Rollup merge of #137758 - jdonszelmann:fix-137662, r=nnethercote
compiler-errors Mar 6, 2025
1882e00
Rollup merge of #137764 - compiler-errors:always-applicable-negative-…
compiler-errors Mar 6, 2025
fabe142
Rollup merge of #137772 - thaliaarchi:bstr-display, r=joshtriplett
compiler-errors Mar 6, 2025
8d431f3
Rollup merge of #137798 - marcoieni:ubuntu-24-large-runner-arm, r=Kobzol
compiler-errors Mar 6, 2025
623c32b
Rollup merge of #137802 - RalfJung:miri-native-call-exposed, r=oli-obk
compiler-errors Mar 6, 2025
2c0d1d9
Rollup merge of #137805 - RalfJung:layout-debug-print, r=Noratrieb
compiler-errors Mar 6, 2025
915e285
Rollup merge of #137808 - jswrenn:droppy-unsafe-fields, r=nnethercote
compiler-errors Mar 6, 2025
b5101a3
Rollup merge of #137820 - meithecatte:instantiate-opt, r=BoxyUwU
compiler-errors Mar 6, 2025
1b0a507
Rollup merge of #137825 - estebank:rtn-sugg-2, r=compiler-errors
compiler-errors Mar 6, 2025
37490b3
Rollup merge of #137868 - taiki-e:powerpcspe-doc, r=workingjubilee
compiler-errors Mar 6, 2025
5601e60
Rollup merge of #137910 - compiler-errors:async-fn-goal-error, r=oli-obk
compiler-errors Mar 6, 2025
2b21b9c
Rollup merge of #130808 - checkraisefold:fix-questionmark-linking, r=…
Noratrieb Mar 6, 2025
fc686f0
Rollup merge of #133984 - DaniPopes:scmp-ucmp, r=scottmcm
Noratrieb Mar 6, 2025
3c6e5de
Rollup merge of #134626 - veera-sivarajan:five-codegen-tests, r=Mark-…
Noratrieb Mar 6, 2025
0eb1b8f
Rollup merge of #135395 - saethlin:compiler-builtins-cgus, r=bjorn3
Noratrieb Mar 6, 2025
d504692
Rollup merge of #135733 - frank-king:feature/pin-self-receiver, r=oli…
Noratrieb Mar 6, 2025
6ea6ad9
Rollup merge of #136922 - oli-obk:pattern-types-option-ends, r=BoxyUwU
Noratrieb Mar 6, 2025
35923f6
Rollup merge of #137303 - compiler-errors:maybe-forgor, r=cjgillot
Noratrieb Mar 6, 2025
23db74f
Rollup merge of #137327 - arlosi:home-dir, r=Mark-Simulacrum
Noratrieb Mar 6, 2025
cea1eb0
Rollup merge of #137358 - dianne:new-match-ergonomics-examples, r=Nad…
Noratrieb Mar 6, 2025
649d4a0
Rollup merge of #137500 - scottmcm:trunc-br, r=saethlin
Noratrieb Mar 6, 2025
f6375c9
Rollup merge of #137502 - compiler-errors:global-asm-aint-mir-body, r…
Noratrieb Mar 6, 2025
278232c
Rollup merge of #137513 - scottmcm:identity-transmute, r=saethlin
Noratrieb Mar 6, 2025
8d77084
Rollup merge of #137534 - xizheyin:issue-137342, r=GuillaumeGomez
Noratrieb Mar 6, 2025
b607b7b
Rollup merge of #137541 - onur-ozkan:fix-cargo-clippy-bin, r=jieyouxu
Noratrieb Mar 6, 2025
1996401
Rollup merge of #137563 - FractalFir:dep_graph_cap, r=nnethercote
Noratrieb Mar 6, 2025
bc3e0ed
Rollup merge of #137565 - compiler-errors:macro-ex, r=estebank
Noratrieb Mar 6, 2025
7d89de6
Rollup merge of #137637 - compiler-errors:dyn-cast-from-dyn-star, r=o…
Noratrieb Mar 6, 2025
d5f7f19
Rollup merge of #137643 - beetrees:repr128-dwarf-variant-test, r=jiey…
Noratrieb Mar 6, 2025
5aed315
Rollup merge of #137655 - nnethercote:split-edges-iterator, r=nnether…
Noratrieb Mar 6, 2025
2943e91
Rollup merge of #137665 - Kobzol:update-sccache, r=marcoieni
Noratrieb Mar 6, 2025
67897f0
Rollup merge of #137744 - skius:master, r=Nadrieril
Noratrieb Mar 6, 2025
f983315
Rollup merge of #137758 - jdonszelmann:fix-137662, r=nnethercote
Noratrieb Mar 6, 2025
65cb4a0
Rollup merge of #137764 - compiler-errors:always-applicable-negative-…
Noratrieb Mar 6, 2025
c9fbfce
Rollup merge of #137772 - thaliaarchi:bstr-display, r=joshtriplett
Noratrieb Mar 6, 2025
ebde235
Rollup merge of #137798 - marcoieni:ubuntu-24-large-runner-arm, r=Kobzol
Noratrieb Mar 6, 2025
f1aad67
Rollup merge of #137802 - RalfJung:miri-native-call-exposed, r=oli-obk
Noratrieb Mar 6, 2025
15b74e4
Rollup merge of #137805 - RalfJung:layout-debug-print, r=Noratrieb
Noratrieb Mar 6, 2025
95663f4
Rollup merge of #137808 - jswrenn:droppy-unsafe-fields, r=nnethercote
Noratrieb Mar 6, 2025
e6eab19
Rollup merge of #137820 - meithecatte:instantiate-opt, r=BoxyUwU
Noratrieb Mar 6, 2025
6d01ae8
Rollup merge of #137825 - estebank:rtn-sugg-2, r=compiler-errors
Noratrieb Mar 6, 2025
66cc399
Rollup merge of #137834 - lolbinarycat:rustc_fluent_macro-137815, r=B…
Noratrieb Mar 6, 2025
b32462b
Rollup merge of #137868 - taiki-e:powerpcspe-doc, r=workingjubilee
Noratrieb Mar 6, 2025
48d8dca
Rollup merge of #137910 - compiler-errors:async-fn-goal-error, r=oli-obk
Noratrieb Mar 6, 2025
307fbfd
Rollup merge of #137920 - RalfJung:provenance-map-emptiness, r=oli-obk
Noratrieb Mar 6, 2025
7ad72f4
Rollup merge of #138038 - tgross35:update-builtins, r=tgross35
Noratrieb Mar 6, 2025
4628726
Rollup merge of #138041 - thaliaarchi:use-prelude-size-of.boostrap-co…
Noratrieb Mar 6, 2025
221278a
Rollup merge of #138046 - onur-ozkan:trim-include-str, r=jieyouxu
Noratrieb Mar 6, 2025
b83827e
Rollup merge of #138052 - lqd:lld-linker-messages, r=jieyouxu
Noratrieb Mar 6, 2025
c460006
Rollup merge of #138053 - Kobzol:more-try-jobs, r=marcoieni
Noratrieb Mar 6, 2025
49acbfc
Rollup merge of #138061 - jieyouxu:target-reviewers, r=wesleywiser
Noratrieb Mar 6, 2025
7cd9e83
Rollup merge of #138075 - compiler-errors:final-seg, r=Noratrieb
Noratrieb Mar 6, 2025
69143c0
Rollup merge of #138079 - compiler-errors:rollup-8cax8qw, r=compiler-…
Noratrieb Mar 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion compiler/rustc_abi/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1812,7 +1812,7 @@ where
f.debug_struct("Layout")
.field("size", size)
.field("align", align)
.field("abi", backend_repr)
.field("backend_repr", backend_repr)
.field("fields", fields)
.field("largest_niche", largest_niche)
.field("uninhabited", uninhabited)
Expand Down
21 changes: 18 additions & 3 deletions compiler/rustc_ast/src/ast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2641,6 +2641,8 @@ pub enum SelfKind {
Value(Mutability),
/// `&'lt self`, `&'lt mut self`
Region(Option<Lifetime>, Mutability),
/// `&'lt pin const self`, `&'lt pin mut self`
Pinned(Option<Lifetime>, Mutability),
/// `self: TYPE`, `mut self: TYPE`
Explicit(P<Ty>, Mutability),
}
Expand All @@ -2650,6 +2652,8 @@ impl SelfKind {
match self {
SelfKind::Region(None, mutbl) => mutbl.ref_prefix_str().to_string(),
SelfKind::Region(Some(lt), mutbl) => format!("&{lt} {}", mutbl.prefix_str()),
SelfKind::Pinned(None, mutbl) => format!("&pin {}", mutbl.ptr_str()),
SelfKind::Pinned(Some(lt), mutbl) => format!("&{lt} pin {}", mutbl.ptr_str()),
SelfKind::Value(_) | SelfKind::Explicit(_, _) => {
unreachable!("if we had an explicit self, we wouldn't be here")
}
Expand All @@ -2666,11 +2670,13 @@ impl Param {
if ident.name == kw::SelfLower {
return match self.ty.kind {
TyKind::ImplicitSelf => Some(respan(self.pat.span, SelfKind::Value(mutbl))),
TyKind::Ref(lt, MutTy { ref ty, mutbl })
| TyKind::PinnedRef(lt, MutTy { ref ty, mutbl })
TyKind::Ref(lt, MutTy { ref ty, mutbl }) if ty.kind.is_implicit_self() => {
Some(respan(self.pat.span, SelfKind::Region(lt, mutbl)))
}
TyKind::PinnedRef(lt, MutTy { ref ty, mutbl })
if ty.kind.is_implicit_self() =>
{
Some(respan(self.pat.span, SelfKind::Region(lt, mutbl)))
Some(respan(self.pat.span, SelfKind::Pinned(lt, mutbl)))
}
_ => Some(respan(
self.pat.span.to(self.ty.span),
Expand Down Expand Up @@ -2712,6 +2718,15 @@ impl Param {
tokens: None,
}),
),
SelfKind::Pinned(lt, mutbl) => (
mutbl,
P(Ty {
id: DUMMY_NODE_ID,
kind: TyKind::PinnedRef(lt, MutTy { ty: infer_ty, mutbl }),
span,
tokens: None,
}),
),
};
Param {
attrs,
Expand Down
5 changes: 3 additions & 2 deletions compiler/rustc_ast_lowering/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ struct LoweringContext<'a, 'hir> {

allow_try_trait: Arc<[Symbol]>,
allow_gen_future: Arc<[Symbol]>,
allow_pattern_type: Arc<[Symbol]>,
allow_async_iterator: Arc<[Symbol]>,
allow_for_await: Arc<[Symbol]>,
allow_async_fn_traits: Arc<[Symbol]>,
Expand Down Expand Up @@ -176,6 +177,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
impl_trait_defs: Vec::new(),
impl_trait_bounds: Vec::new(),
allow_try_trait: [sym::try_trait_v2, sym::yeet_desugar_details].into(),
allow_pattern_type: [sym::pattern_types, sym::pattern_type_range_trait].into(),
allow_gen_future: if tcx.features().async_fn_track_caller() {
[sym::gen_future, sym::closure_track_caller].into()
} else {
Expand Down Expand Up @@ -926,7 +928,6 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
if let Some(first_char) = constraint.ident.as_str().chars().next()
&& first_char.is_ascii_lowercase()
{
tracing::info!(?data, ?data.inputs);
let err = match (&data.inputs[..], &data.output) {
([_, ..], FnRetTy::Default(_)) => {
errors::BadReturnTypeNotation::Inputs { span: data.inputs_span }
Expand Down Expand Up @@ -1365,7 +1366,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
}
}
TyKind::Pat(ty, pat) => {
hir::TyKind::Pat(self.lower_ty(ty, itctx), self.lower_ty_pat(pat))
hir::TyKind::Pat(self.lower_ty(ty, itctx), self.lower_ty_pat(pat, ty.span))
}
TyKind::MacCall(_) => {
span_bug!(t.span, "`TyKind::MacCall` should have been expanded by now")
Expand Down
122 changes: 112 additions & 10 deletions compiler/rustc_ast_lowering/src/pat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ use std::sync::Arc;
use rustc_ast::ptr::P;
use rustc_ast::*;
use rustc_data_structures::stack::ensure_sufficient_stack;
use rustc_hir as hir;
use rustc_hir::def::Res;
use rustc_hir::def::{DefKind, Res};
use rustc_hir::{self as hir, LangItem};
use rustc_middle::span_bug;
use rustc_span::source_map::{Spanned, respan};
use rustc_span::{Ident, Span};
use rustc_span::{DesugaringKind, Ident, Span, kw};

use super::errors::{
ArbitraryExpressionInPattern, ExtraDoubleDot, MisplacedDoubleDot, SubTupleBinding,
Expand Down Expand Up @@ -430,22 +430,124 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
self.arena.alloc(hir::PatExpr { hir_id: self.lower_node_id(expr.id), span, kind })
}

pub(crate) fn lower_ty_pat(&mut self, pattern: &TyPat) -> &'hir hir::TyPat<'hir> {
self.arena.alloc(self.lower_ty_pat_mut(pattern))
pub(crate) fn lower_ty_pat(
&mut self,
pattern: &TyPat,
base_type: Span,
) -> &'hir hir::TyPat<'hir> {
self.arena.alloc(self.lower_ty_pat_mut(pattern, base_type))
}

fn lower_ty_pat_mut(&mut self, pattern: &TyPat) -> hir::TyPat<'hir> {
fn lower_ty_pat_mut(&mut self, pattern: &TyPat, base_type: Span) -> hir::TyPat<'hir> {
// loop here to avoid recursion
let pat_hir_id = self.lower_node_id(pattern.id);
let node = match &pattern.kind {
TyPatKind::Range(e1, e2, Spanned { node: end, .. }) => hir::TyPatKind::Range(
e1.as_deref().map(|e| self.lower_anon_const_to_const_arg(e)),
e2.as_deref().map(|e| self.lower_anon_const_to_const_arg(e)),
self.lower_range_end(end, e2.is_some()),
TyPatKind::Range(e1, e2, Spanned { node: end, span }) => hir::TyPatKind::Range(
e1.as_deref().map(|e| self.lower_anon_const_to_const_arg(e)).unwrap_or_else(|| {
self.lower_ty_pat_range_end(
hir::LangItem::RangeMin,
span.shrink_to_lo(),
base_type,
)
}),
e2.as_deref()
.map(|e| match end {
RangeEnd::Included(..) => self.lower_anon_const_to_const_arg(e),
RangeEnd::Excluded => self.lower_excluded_range_end(e),
})
.unwrap_or_else(|| {
self.lower_ty_pat_range_end(
hir::LangItem::RangeMax,
span.shrink_to_hi(),
base_type,
)
}),
),
TyPatKind::Err(guar) => hir::TyPatKind::Err(*guar),
};

hir::TyPat { hir_id: pat_hir_id, kind: node, span: self.lower_span(pattern.span) }
}

/// Lowers the range end of an exclusive range (`2..5`) to an inclusive range 2..=(5 - 1).
/// This way the type system doesn't have to handle the distinction between inclusive/exclusive ranges.
fn lower_excluded_range_end(&mut self, e: &AnonConst) -> &'hir hir::ConstArg<'hir> {
let span = self.lower_span(e.value.span);
let unstable_span = self.mark_span_with_reason(
DesugaringKind::PatTyRange,
span,
Some(Arc::clone(&self.allow_pattern_type)),
);
let anon_const = self.with_new_scopes(span, |this| {
let def_id = this.local_def_id(e.id);
let hir_id = this.lower_node_id(e.id);
let body = this.lower_body(|this| {
// Need to use a custom function as we can't just subtract `1` from a `char`.
let kind = hir::ExprKind::Path(this.make_lang_item_qpath(
hir::LangItem::RangeSub,
unstable_span,
None,
));
let fn_def = this.arena.alloc(hir::Expr { hir_id: this.next_id(), kind, span });
let args = this.arena.alloc([this.lower_expr_mut(&e.value)]);
(
&[],
hir::Expr {
hir_id: this.next_id(),
kind: hir::ExprKind::Call(fn_def, args),
span,
},
)
});
hir::AnonConst { def_id, hir_id, body, span }
});
self.arena.alloc(hir::ConstArg {
hir_id: self.next_id(),
kind: hir::ConstArgKind::Anon(self.arena.alloc(anon_const)),
})
}

/// When a range has no end specified (`1..` or `1..=`) or no start specified (`..5` or `..=5`),
/// we instead use a constant of the MAX/MIN of the type.
/// This way the type system does not have to handle the lack of a start/end.
fn lower_ty_pat_range_end(
&mut self,
lang_item: LangItem,
span: Span,
base_type: Span,
) -> &'hir hir::ConstArg<'hir> {
let parent_def_id = self.current_hir_id_owner.def_id;
let node_id = self.next_node_id();

// Add a definition for the in-band const def.
// We're generating a range end that didn't exist in the AST,
// so the def collector didn't create the def ahead of time. That's why we have to do
// it here.
let def_id = self.create_def(parent_def_id, node_id, kw::Empty, DefKind::AnonConst, span);
let hir_id = self.lower_node_id(node_id);

let unstable_span = self.mark_span_with_reason(
DesugaringKind::PatTyRange,
self.lower_span(span),
Some(Arc::clone(&self.allow_pattern_type)),
);
let span = self.lower_span(base_type);

let path_expr = hir::Expr {
hir_id: self.next_id(),
kind: hir::ExprKind::Path(self.make_lang_item_qpath(lang_item, unstable_span, None)),
span,
};

let ct = self.with_new_scopes(span, |this| {
self.arena.alloc(hir::AnonConst {
def_id,
hir_id,
body: this.lower_body(|_this| (&[], path_expr)),
span,
})
});
let hir_id = self.next_id();
self.arena.alloc(hir::ConstArg { kind: hir::ConstArgKind::Anon(ct), hir_id })
}
}
1 change: 0 additions & 1 deletion compiler/rustc_ast_lowering/src/path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,6 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
}
GenericArgs::Parenthesized(data) => match generic_args_mode {
GenericArgsMode::ReturnTypeNotation => {
tracing::info!(?data, ?data.inputs);
let err = match (&data.inputs[..], &data.output) {
([_, ..], FnRetTy::Default(_)) => {
BadReturnTypeNotation::Inputs { span: data.inputs_span }
Expand Down
7 changes: 7 additions & 0 deletions compiler/rustc_ast_pretty/src/pprust/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1783,6 +1783,13 @@ impl<'a> State<'a> {
self.print_mutability(*m, false);
self.word("self")
}
SelfKind::Pinned(lt, m) => {
self.word("&");
self.print_opt_lifetime(lt);
self.word("pin ");
self.print_mutability(*m, true);
self.word("self")
}
SelfKind::Explicit(typ, m) => {
self.print_mutability(*m, false);
self.word("self");
Expand Down
9 changes: 9 additions & 0 deletions compiler/rustc_attr_parsing/src/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,15 @@ impl<'a> MetaItemListParserContext<'a> {
{
self.inside_delimiters.next();
return Some(MetaItemOrLitParser::Lit(lit));
} else if let Some(TokenTree::Delimited(.., Delimiter::Invisible(_), inner_tokens)) =
self.inside_delimiters.peek()
{
self.inside_delimiters.next();
return MetaItemListParserContext {
inside_delimiters: inner_tokens.iter().peekable(),
dcx: self.dcx,
}
.next();
}

// or a path.
Expand Down
Loading
Loading