Auto merge of #76985 - hbina:clone_check, r=estebank
Prevent stack overflow in deeply nested types. Related issue #75577 (?) Unfortunately, I am unable to test whether this actually solves the problem because apparently, 12GB RAM + 2GB swap is not enough to compile the (admittedly toy) source file.
This commit is contained in:
commit
91a79fb29a
1 changed files with 13 additions and 1 deletions
|
@ -27,6 +27,7 @@ use crate::token::{self, CommentKind, DelimToken};
|
|||
use crate::tokenstream::{DelimSpan, TokenStream, TokenTree};
|
||||
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
use rustc_data_structures::stack::ensure_sufficient_stack;
|
||||
use rustc_data_structures::sync::Lrc;
|
||||
use rustc_data_structures::thin_vec::ThinVec;
|
||||
use rustc_macros::HashStable_Generic;
|
||||
|
@ -1864,7 +1865,7 @@ pub enum AssocTyConstraintKind {
|
|||
Bound { bounds: GenericBounds },
|
||||
}
|
||||
|
||||
#[derive(Clone, Encodable, Decodable, Debug)]
|
||||
#[derive(Encodable, Decodable, Debug)]
|
||||
pub struct Ty {
|
||||
pub id: NodeId,
|
||||
pub kind: TyKind,
|
||||
|
@ -1872,6 +1873,17 @@ pub struct Ty {
|
|||
pub tokens: Option<TokenStream>,
|
||||
}
|
||||
|
||||
impl Clone for Ty {
|
||||
fn clone(&self) -> Self {
|
||||
ensure_sufficient_stack(|| Self {
|
||||
id: self.id,
|
||||
kind: self.kind.clone(),
|
||||
span: self.span,
|
||||
tokens: self.tokens.clone(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Encodable, Decodable, Debug)]
|
||||
pub struct BareFnTy {
|
||||
pub unsafety: Unsafe,
|
||||
|
|
Loading…
Add table
Reference in a new issue