Skip to content

Commit ffaf6f0

Browse files
committed
Auto merge of rust-lang#95506 - Dylan-DPC:rollup-b6kxzjc, r=Dylan-DPC
Rollup of 5 pull requests Successful merges: - rust-lang#95130 (Stabilize thread::is_finished) - rust-lang#95263 (Restore `impl Future<Output = Type>` to async blocks) - rust-lang#95471 (Don't ICE when opaque types get their hidden type constrained again.) - rust-lang#95491 (Stabilize feature vec_retain_mut on Vec and VecDeque) - rust-lang#95497 (Spellchecking compiler comments) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2 parents a39ac5a + 1b7d6db commit ffaf6f0

File tree

128 files changed

+233
-208
lines changed

Some content is hidden

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

128 files changed

+233
-208
lines changed

Diff for: compiler/rustc_ast/src/tokenstream.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ impl AttrAnnotatedTokenStream {
295295
///
296296
/// For example, `#[cfg(FALSE)] struct Foo {}` would
297297
/// have an `attrs` field containing the `#[cfg(FALSE)]` attr,
298-
/// and a `tokens` field storing the (unparesd) tokens `struct Foo {}`
298+
/// and a `tokens` field storing the (unparsed) tokens `struct Foo {}`
299299
#[derive(Clone, Debug, Encodable, Decodable)]
300300
pub struct AttributesData {
301301
/// Attributes, both outer and inner.

Diff for: compiler/rustc_borrowck/src/type_check/relate_tys.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ impl<'tcx> TypeRelatingDelegate<'tcx> for NllTypeRelatingDelegate<'_, '_, 'tcx>
158158
.infcx
159159
.handle_opaque_type(a, b, a_is_expected, &cause, param_env)?
160160
.obligations,
161-
// These fields are filled in during exectuion of the operation
161+
// These fields are filled in during execution of the operation
162162
base_universe: None,
163163
region_constraints: None,
164164
},

Diff for: compiler/rustc_codegen_ssa/src/back/write.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@ pub fn compute_per_cgu_lto_type(
779779
// we'll encounter later.
780780
let is_allocator = module_kind == ModuleKind::Allocator;
781781

782-
// We ignore a request for full crate grath LTO if the cate type
782+
// We ignore a request for full crate graph LTO if the crate type
783783
// is only an rlib, as there is no full crate graph to process,
784784
// that'll happen later.
785785
//

Diff for: compiler/rustc_expand/src/mbe/transcribe.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ enum Frame {
3535
impl Frame {
3636
/// Construct a new frame around the delimited set of tokens.
3737
fn new(mut tts: Vec<mbe::TokenTree>) -> Frame {
38-
// Need to add empty delimeters.
38+
// Need to add empty delimiters.
3939
let open_tt = mbe::TokenTree::token(token::OpenDelim(token::NoDelim), DUMMY_SP);
4040
let close_tt = mbe::TokenTree::token(token::CloseDelim(token::NoDelim), DUMMY_SP);
4141
tts.insert(0, open_tt);
@@ -210,7 +210,7 @@ pub(super) fn transcribe<'a>(
210210
));
211211
}
212212
} else {
213-
// 0 is the initial counter (we have done 0 repretitions so far). `len`
213+
// 0 is the initial counter (we have done 0 repetitions so far). `len`
214214
// is the total number of repetitions we should generate.
215215
repeats.push((0, len));
216216

Diff for: compiler/rustc_index/src/bit_set.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1717,7 +1717,7 @@ impl<R: Idx, C: Idx> SparseBitMatrix<R, C> {
17171717
if let Some(Some(row)) = self.rows.get(row) { Some(row) } else { None }
17181718
}
17191719

1720-
/// Interescts `row` with `set`. `set` can be either `BitSet` or
1720+
/// Intersects `row` with `set`. `set` can be either `BitSet` or
17211721
/// `HybridBitSet`. Has no effect if `row` does not exist.
17221722
///
17231723
/// Returns true if the row was changed.

Diff for: compiler/rustc_infer/src/infer/canonical/query_response.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//! in particular to extract out the resulting region obligations and
33
//! encode them therein.
44
//!
5-
//! For an overview of what canonicaliation is and how it fits into
5+
//! For an overview of what canonicalization is and how it fits into
66
//! rustc, check out the [chapter in the rustc dev guide][c].
77
//!
88
//! [c]: https://rust-lang.github.io/chalk/book/canonical_queries/canonicalization.html

Diff for: compiler/rustc_infer/src/infer/error_reporting/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1164,7 +1164,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
11641164
let len = sub1.len() - common_default_params;
11651165
let consts_offset = len - sub1.consts().count();
11661166

1167-
// Only draw `<...>` if there're lifetime/type arguments.
1167+
// Only draw `<...>` if there are lifetime/type arguments.
11681168
if len > 0 {
11691169
values.0.push_normal("<");
11701170
values.1.push_normal("<");
@@ -1245,7 +1245,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
12451245
}
12461246

12471247
// Close the type argument bracket.
1248-
// Only draw `<...>` if there're lifetime/type arguments.
1248+
// Only draw `<...>` if there are lifetime/type arguments.
12491249
if len > 0 {
12501250
values.0.push_normal(">");
12511251
values.1.push_normal(">");
@@ -1857,7 +1857,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
18571857
})
18581858
.transpose();
18591859
if output.is_some() {
1860-
// We don't account for multiple `Future::Output = Ty` contraints.
1860+
// We don't account for multiple `Future::Output = Ty` constraints.
18611861
return output;
18621862
}
18631863
}

Diff for: compiler/rustc_infer/src/infer/lattice.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ where
8383
// But if we did in reverse order, we would create a `v <:
8484
// LHS` (or vice versa) constraint and then instantiate
8585
// `v`. This would require further processing to achieve same
86-
// end-result; in partiular, this screws up some of the logic
86+
// end-result; in particular, this screws up some of the logic
8787
// in coercion, which expects LUB to figure out that the LHS
8888
// is (e.g.) `Box<i32>`. A more obvious solution might be to
8989
// iterate on the subtype obligations that are returned, but I

Diff for: compiler/rustc_infer/src/infer/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ pub struct InferCtxt<'a, 'tcx> {
343343

344344
/// Track how many errors were reported when this infcx is created.
345345
/// If the number of errors increases, that's also a sign (line
346-
/// `tained_by_errors`) to avoid reporting certain kinds of errors.
346+
/// `tainted_by_errors`) to avoid reporting certain kinds of errors.
347347
// FIXME(matthewjasper) Merge into `tainted_by_errors_flag`
348348
err_count_on_creation: usize,
349349

Diff for: compiler/rustc_infer/src/infer/nll_relate/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ where
550550
}
551551

552552
if a == b {
553-
// Subtle: if a or b has a bound variable that we are lazilly
553+
// Subtle: if a or b has a bound variable that we are lazily
554554
// substituting, then even if a == b, it could be that the values we
555555
// will substitute for those bound variables are *not* the same, and
556556
// hence returning `Ok(a)` is incorrect.

Diff for: compiler/rustc_infer/src/infer/opaque_types.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
306306
/// # Constrain regions, not the hidden concrete type
307307
///
308308
/// Note that generating constraints on each region `Rc` is *not*
309-
/// the same as generating an outlives constraint on `Tc` iself.
309+
/// the same as generating an outlives constraint on `Tc` itself.
310310
/// For example, if we had a function like this:
311311
///
312312
/// ```rust

Diff for: compiler/rustc_infer/src/infer/outlives/components.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ fn compute_components<'tcx>(
125125
// regionck more ways to prove that it holds. However,
126126
// regionck is not (at least currently) prepared to deal with
127127
// higher-ranked regions that may appear in the
128-
// trait-ref. Therefore, if we see any higher-ranke regions,
128+
// trait-ref. Therefore, if we see any higher-ranked regions,
129129
// we simply fallback to the most restrictive rule, which
130130
// requires that `Pi: 'a` for all `i`.
131131
ty::Projection(ref data) => {

Diff for: compiler/rustc_infer/src/infer/outlives/env.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ impl<'a, 'tcx> OutlivesEnvironment<'tcx> {
9393
&self.region_bound_pairs_map
9494
}
9595

96-
/// This is a hack to support the old-skool regionck, which
96+
/// This is a hack to support the old-school regionck, which
9797
/// processes region constraints from the main function and the
9898
/// closure together. In that context, when we enter a closure, we
9999
/// want to be able to "save" the state of the surrounding a

Diff for: compiler/rustc_infer/src/infer/outlives/obligations.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ where
365365
debug!("projection_must_outlive: approx_env_bounds={:?}", approx_env_bounds);
366366

367367
// Remove outlives bounds that we get from the environment but
368-
// which are also deducable from the trait. This arises (cc
368+
// which are also deducible from the trait. This arises (cc
369369
// #55756) in cases where you have e.g., `<T as Foo<'a>>::Item:
370370
// 'a` in the environment but `trait Foo<'b> { type Item: 'b
371371
// }` in the trait definition.

Diff for: compiler/rustc_infer/src/infer/region_constraints/leak_check.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ impl<'tcx> RegionConstraintCollector<'_, 'tcx> {
3333
/// not entirely true. In particular, in the future, we may extend the
3434
/// environment with implied bounds or other info about how placeholders
3535
/// relate to regions in outer universes. In that case, `P1: R` for example
36-
/// might become solveable.
36+
/// might become solvable.
3737
///
3838
/// # Summary of the implementation
3939
///
@@ -210,7 +210,7 @@ impl<'me, 'tcx> LeakCheck<'me, 'tcx> {
210210
// * `scc_placeholder[scc1]` stores the placeholder that `scc1` must
211211
// be equal to (if any)
212212
//
213-
// For each succssor `scc2` where `scc1: scc2`:
213+
// For each successor `scc2` where `scc1: scc2`:
214214
//
215215
// * `scc_placeholder[scc2]` stores some placeholder `P` where
216216
// `scc2: P` (if any)
@@ -243,7 +243,7 @@ impl<'me, 'tcx> LeakCheck<'me, 'tcx> {
243243
// Update minimum universe of scc1.
244244
self.scc_universes[scc1] = scc1_universe;
245245

246-
// At this point, `scc_placholder[scc1]` stores the placeholder that
246+
// At this point, `scc_placeholders[scc1]` stores the placeholder that
247247
// `scc1` must be equal to, if any.
248248
if let Some(scc1_placeholder) = self.scc_placeholders[scc1] {
249249
debug!(

Diff for: compiler/rustc_infer/src/infer/region_constraints/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ pub struct RegionConstraintStorage<'tcx> {
4646
/// exist). This prevents us from making many such regions.
4747
glbs: CombineMap<'tcx>,
4848

49-
/// When we add a R1 == R2 constriant, we currently add (a) edges
49+
/// When we add a R1 == R2 constraint, we currently add (a) edges
5050
/// R1 <= R2 and R2 <= R1 and (b) we unify the two regions in this
5151
/// table. You can then call `opportunistic_resolve_var` early
5252
/// which will map R1 and R2 to some common region (i.e., either

Diff for: compiler/rustc_infer/src/infer/resolve.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ impl<'a, 'tcx> TypeFolder<'tcx> for OpportunisticVarResolver<'a, 'tcx> {
5555

5656
/// The opportunistic region resolver opportunistically resolves regions
5757
/// variables to the variable with the least variable id. It is used when
58-
/// normlizing projections to avoid hitting the recursion limit by creating
58+
/// normalizing projections to avoid hitting the recursion limit by creating
5959
/// many versions of a predicate for types that in the end have to unify.
6060
///
6161
/// If you want to resolve type and const variables as well, call

Diff for: compiler/rustc_interface/src/passes.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,7 @@ fn analysis(tcx: TyCtxt<'_>, (): ()) -> Result<()> {
929929
});
930930
},
931931
{
932-
// We force these querie to run,
932+
// We force these queries to run,
933933
// since they might not otherwise get called.
934934
// This marks the corresponding crate-level attributes
935935
// as used, and ensures that their values are valid.

Diff for: compiler/rustc_lint/src/noop_method_call.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ impl<'tcx> LateLintPass<'tcx> for NoopMethodCall {
6464
let substs = cx.typeck_results().node_substs(expr.hir_id);
6565
if substs.needs_subst() {
6666
// We can't resolve on types that require monomorphization, so we don't handle them if
67-
// we need to perfom substitution.
67+
// we need to perform substitution.
6868
return;
6969
}
7070
let param_env = cx.tcx.param_env(trait_id);

Diff for: compiler/rustc_lint_defs/src/builtin.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -2254,7 +2254,7 @@ declare_lint! {
22542254
declare_lint! {
22552255
/// The `nontrivial_structural_match` lint detects constants that are used in patterns,
22562256
/// whose type is not structural-match and whose initializer body actually uses values
2257-
/// that are not structural-match. So `Option<NotStruturalMatch>` is ok if the constant
2257+
/// that are not structural-match. So `Option<NotStructuralMatch>` is ok if the constant
22582258
/// is just `None`.
22592259
///
22602260
/// ### Example
@@ -2276,7 +2276,7 @@ declare_lint! {
22762276
///
22772277
/// ### Explanation
22782278
///
2279-
/// Previous versions of Rust accepted constants in patterns, even if those constants's types
2279+
/// Previous versions of Rust accepted constants in patterns, even if those constants' types
22802280
/// did not have `PartialEq` derived. Thus the compiler falls back to runtime execution of
22812281
/// `PartialEq`, which can report that two constants are not equal even if they are
22822282
/// bit-equivalent.
@@ -3626,7 +3626,7 @@ declare_lint! {
36263626
/// The `deref_into_dyn_supertrait` lint is output whenever there is a use of the
36273627
/// `Deref` implementation with a `dyn SuperTrait` type as `Output`.
36283628
///
3629-
/// These implementations will become shadowed when the `trait_upcasting` feature is stablized.
3629+
/// These implementations will become shadowed when the `trait_upcasting` feature is stabilized.
36303630
/// The `deref` functions will no longer be called implicitly, so there might be behavior change.
36313631
///
36323632
/// ### Example

Diff for: compiler/rustc_metadata/src/rmeta/decoder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,7 @@ impl<'a, 'tcx> Decodable<DecodeContext<'a, 'tcx>> for Span {
580580
//
581581
// Suppose that we're currently compiling crate A, and start deserializing
582582
// metadata from crate B. When we deserialize a Span from crate B's metadata,
583-
// there are two posibilites:
583+
// there are two possibilities:
584584
//
585585
// 1. The span references a file from crate B. This makes it a 'local' span,
586586
// which means that we can use crate B's serialized source map information.

Diff for: compiler/rustc_metadata/src/rmeta/encoder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ impl<'a, 'tcx> Encodable<EncodeContext<'a, 'tcx>> for Span {
271271
// from. We use `TAG_VALID_SPAN_FOREIGN` to indicate that a `CrateNum` should
272272
// be deserialized after the rest of the span data, which tells the deserializer
273273
// which crate contains the source map information.
274-
// 2. This span comes from our own crate. No special hamdling is needed - we just
274+
// 2. This span comes from our own crate. No special handling is needed - we just
275275
// write `TAG_VALID_SPAN_LOCAL` to let the deserializer know that it should use
276276
// our own source map information.
277277
//

Diff for: compiler/rustc_middle/src/hir/map/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ impl<'hir> Map<'hir> {
218218
}
219219

220220
pub fn iter_local_def_id(self) -> impl Iterator<Item = LocalDefId> + 'hir {
221-
// Create a dependency to the crate to be sure we reexcute this when the amount of
221+
// Create a dependency to the crate to be sure we re-execute this when the amount of
222222
// definitions change.
223223
self.tcx.ensure().hir_crate(());
224224
self.tcx.untracked_resolutions.definitions.iter_local_def_id()

Diff for: compiler/rustc_middle/src/infer/canonical.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ pub enum Certainty {
220220
/// distinguish the two (e.g., due to our preference for where
221221
/// clauses over impls).
222222
///
223-
/// After some unifiations and things have been done, it makes
223+
/// After some unification and things have been done, it makes
224224
/// sense to try and prove again -- of course, at that point, the
225225
/// canonical form will be different, making this a distinct
226226
/// query.

Diff for: compiler/rustc_middle/src/lint.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ pub fn struct_lint_level<'s, 'd>(
340340
(Level::Expect(expect_id), _) => {
341341
// This case is special as we actually allow the lint itself in this context, but
342342
// we can't return early like in the case for `Level::Allow` because we still
343-
// need the lint diagnostic to be emitted to `rustc_error::HanderInner`.
343+
// need the lint diagnostic to be emitted to `rustc_error::HandlerInner`.
344344
//
345345
// We can also not mark the lint expectation as fulfilled here right away, as it
346346
// can still be cancelled in the decorate function. All of this means that we simply

Diff for: compiler/rustc_middle/src/mir/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2840,7 +2840,7 @@ impl<'tcx> UserTypeProjections {
28402840

28412841
/// Encodes the effect of a user-supplied type annotation on the
28422842
/// subcomponents of a pattern. The effect is determined by applying the
2843-
/// given list of proejctions to some underlying base type. Often,
2843+
/// given list of projections to some underlying base type. Often,
28442844
/// the projection element list `projs` is empty, in which case this
28452845
/// directly encodes a type in `base`. But in the case of complex patterns with
28462846
/// subpatterns and bindings, we want to apply only a *part* of the type to a variable,

Diff for: compiler/rustc_middle/src/mir/query.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ pub enum UnusedUnsafe {
126126
/// > ``… because it's nested under this `unsafe fn` ``
127127
///
128128
/// the second HirId here indicates the first usage of the `unsafe` block,
129-
/// which allows retrival of the LintLevelSource for why that operation would
129+
/// which allows retrieval of the LintLevelSource for why that operation would
130130
/// have been permitted without the block
131131
InUnsafeFn(hir::HirId, hir::HirId),
132132
}

Diff for: compiler/rustc_middle/src/mir/traversal.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use super::*;
55
/// Preorder traversal of a graph.
66
///
77
/// Preorder traversal is when each node is visited after at least one of its predecessors. If you
8-
/// are familar with some basic graph theory, then this performs a depth first search and returns
8+
/// are familiar with some basic graph theory, then this performs a depth first search and returns
99
/// nodes in order of discovery time.
1010
///
1111
/// ```text

Diff for: compiler/rustc_middle/src/thir.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -656,7 +656,7 @@ pub enum PatKind<'tcx> {
656656
/// One of the following:
657657
/// * `&str`, which will be handled as a string pattern and thus exhaustiveness
658658
/// checking will detect if you use the same string twice in different patterns.
659-
/// * integer, bool, char or float, which will be handled by exhaustivenes to cover exactly
659+
/// * integer, bool, char or float, which will be handled by exhaustiveness to cover exactly
660660
/// its own value, similar to `&str`, but these values are much simpler.
661661
/// * Opaque constants, that must not be matched structurally. So anything that does not derive
662662
/// `PartialEq` and `Eq`.

Diff for: compiler/rustc_middle/src/traits/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ pub type SelectionResult<'tcx, T> = Result<Option<T>, SelectionError<'tcx>>;
524524
/// // Case A: ImplSource points at a specific impl. Only possible when
525525
/// // type is concretely known. If the impl itself has bounded
526526
/// // type parameters, ImplSource will carry resolutions for those as well:
527-
/// concrete.clone(); // ImpleSource(Impl_1, [ImplSource(Impl_2, [ImplSource(Impl_3)])])
527+
/// concrete.clone(); // ImplSource(Impl_1, [ImplSource(Impl_2, [ImplSource(Impl_3)])])
528528
///
529529
/// // Case A: ImplSource points at a specific impl. Only possible when
530530
/// // type is concretely known. If the impl itself has bounded

Diff for: compiler/rustc_middle/src/traits/util.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::ty::{PolyTraitRef, TyCtxt};
44

55
/// Given a PolyTraitRef, get the PolyTraitRefs of the trait's (transitive) supertraits.
66
///
7-
/// A simplfied version of the same function at `rustc_infer::traits::util::supertraits`.
7+
/// A simplified version of the same function at `rustc_infer::traits::util::supertraits`.
88
pub fn supertraits<'tcx>(
99
tcx: TyCtxt<'tcx>,
1010
trait_ref: PolyTraitRef<'tcx>,

Diff for: compiler/rustc_middle/src/ty/diagnostics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ pub fn suggest_arbitrary_trait_bound(
139139
(Some(_), "Self") => return false,
140140
_ => {}
141141
}
142-
// Suggest a where clause bound for a non-type paremeter.
142+
// Suggest a where clause bound for a non-type parameter.
143143
let (action, prefix) = if generics.where_clause.predicates.is_empty() {
144144
("introducing a", " where ")
145145
} else {

Diff for: compiler/rustc_middle/src/ty/layout.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2718,7 +2718,7 @@ impl<'tcx> ty::Instance<'tcx> {
27182718
/// stack-based unwinding (the exact mechanism of which varies
27192719
/// platform-by-platform).
27202720
///
2721-
/// Rust functions are classfied whether or not they can unwind based on the
2721+
/// Rust functions are classified whether or not they can unwind based on the
27222722
/// active "panic strategy". In other words Rust functions are considered to
27232723
/// unwind in `-Cpanic=unwind` mode and cannot unwind in `-Cpanic=abort` mode.
27242724
/// Note that Rust supports intermingling panic=abort and panic=unwind code, but
@@ -2773,7 +2773,7 @@ pub fn fn_can_unwind<'tcx>(
27732773
// To fix this UB rustc would like to change in the future to catch unwinds
27742774
// from function calls that may unwind within a Rust-defined `extern "C"`
27752775
// function and forcibly abort the process, thereby respecting the
2776-
// `nounwind` attribut emitted for `extern "C"`. This behavior change isn't
2776+
// `nounwind` attribute emitted for `extern "C"`. This behavior change isn't
27772777
// ready to roll out, so determining whether or not the `C` family of ABIs
27782778
// unwinds is conditional not only on their definition but also whether the
27792779
// `#![feature(c_unwind)]` feature gate is active.

0 commit comments

Comments
 (0)