Merge pull request #18805 from Veykril/push-pzurvxvoolxs

internal: Implement `<RaSpanServer as SourceFile>::eq`
This commit is contained in:
Lukas Wirth 2024-12-31 12:15:38 +00:00 committed by GitHub
commit 0e716dfdba
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 12 additions and 18 deletions

View file

@ -52,6 +52,7 @@ fn your_stack_belongs_to_me() {
cov_mark::check!(your_stack_belongs_to_me); cov_mark::check!(your_stack_belongs_to_me);
lower( lower(
r#" r#"
#![recursion_limit = "32"]
macro_rules! n_nuple { macro_rules! n_nuple {
($e:tt) => (); ($e:tt) => ();
($($rest:tt)*) => {{ ($($rest:tt)*) => {{
@ -68,6 +69,7 @@ fn your_stack_belongs_to_me2() {
cov_mark::check!(overflow_but_not_me); cov_mark::check!(overflow_but_not_me);
lower( lower(
r#" r#"
#![recursion_limit = "32"]
macro_rules! foo { macro_rules! foo {
() => {{ foo!(); foo!(); }} () => {{ foo!(); foo!(); }}
} }
@ -78,8 +80,6 @@ fn main() { foo!(); }
#[test] #[test]
fn recursion_limit() { fn recursion_limit() {
cov_mark::check!(your_stack_belongs_to_me);
lower( lower(
r#" r#"
#![recursion_limit = "2"] #![recursion_limit = "2"]

View file

@ -1451,13 +1451,7 @@ impl DefCollector<'_> {
depth: usize, depth: usize,
container: ItemContainerId, container: ItemContainerId,
) { ) {
let recursion_limit = self.def_map.recursion_limit() as usize; let recursion_limit = Limit::new(self.def_map.recursion_limit() as usize);
let recursion_limit = Limit::new(if cfg!(test) {
// Without this, `body::tests::your_stack_belongs_to_me` stack-overflows in debug
std::cmp::min(32, recursion_limit)
} else {
recursion_limit
});
if recursion_limit.check(depth).is_err() { if recursion_limit.check(depth).is_err() {
cov_mark::hit!(macro_expansion_overflow); cov_mark::hit!(macro_expansion_overflow);
tracing::warn!("macro expansion is too deep"); tracing::warn!("macro expansion is too deep");

View file

@ -12,7 +12,7 @@ use std::{
use intern::Symbol; use intern::Symbol;
use proc_macro::bridge::{self, server}; use proc_macro::bridge::{self, server};
use span::{Span, FIXUP_ERASED_FILE_AST_ID_MARKER}; use span::{FileId, Span, FIXUP_ERASED_FILE_AST_ID_MARKER};
use tt::{TextRange, TextSize}; use tt::{TextRange, TextSize};
use crate::server_impl::{ use crate::server_impl::{
@ -32,8 +32,10 @@ mod tt {
type TokenStream = crate::server_impl::TokenStream<Span>; type TokenStream = crate::server_impl::TokenStream<Span>;
#[derive(Clone)] #[derive(Copy, Clone, PartialEq, Eq, Debug)]
pub struct SourceFile; pub struct SourceFile {
file_id: FileId,
}
pub struct FreeFunctions; pub struct FreeFunctions;
pub struct RaSpanServer { pub struct RaSpanServer {
@ -291,9 +293,8 @@ impl server::TokenStream for RaSpanServer {
} }
impl server::SourceFile for RaSpanServer { impl server::SourceFile for RaSpanServer {
fn eq(&mut self, _file1: &Self::SourceFile, _file2: &Self::SourceFile) -> bool { fn eq(&mut self, file1: &Self::SourceFile, file2: &Self::SourceFile) -> bool {
// FIXME file1 == file2
true
} }
fn path(&mut self, _file: &Self::SourceFile) -> String { fn path(&mut self, _file: &Self::SourceFile) -> String {
// FIXME // FIXME
@ -308,9 +309,8 @@ impl server::Span for RaSpanServer {
fn debug(&mut self, span: Self::Span) -> String { fn debug(&mut self, span: Self::Span) -> String {
format!("{:?}", span) format!("{:?}", span)
} }
fn source_file(&mut self, _span: Self::Span) -> Self::SourceFile { fn source_file(&mut self, span: Self::Span) -> Self::SourceFile {
// FIXME stub, requires db SourceFile { file_id: span.anchor.file_id.file_id() }
SourceFile {}
} }
fn save_span(&mut self, _span: Self::Span) -> usize { fn save_span(&mut self, _span: Self::Span) -> usize {
// FIXME, quote is incompatible with third-party tools // FIXME, quote is incompatible with third-party tools