Remove SyntaxContext trait

This commit is contained in:
Lukas Wirth 2023-12-20 14:02:40 +01:00
parent 7b804552a5
commit f211a40f1f
3 changed files with 10 additions and 40 deletions

View file

@ -11,7 +11,7 @@ use syntax::{
}; };
use tt::{ use tt::{
buffer::{Cursor, TokenBuffer}, buffer::{Cursor, TokenBuffer},
Span, SyntaxContext, Span,
}; };
use crate::{to_parser_input::to_parser_input, tt_iter::TtIter}; use crate::{to_parser_input::to_parser_input, tt_iter::TtIter};
@ -37,7 +37,6 @@ impl<S: Span, SM: SpanMapper<S>> SpanMapper<S> for &SM {
/// Dummy things for testing where spans don't matter. /// Dummy things for testing where spans don't matter.
pub(crate) mod dummy_test_span_utils { pub(crate) mod dummy_test_span_utils {
use tt::SyntaxContext;
use super::*; use super::*;
@ -53,9 +52,6 @@ pub(crate) mod dummy_test_span_utils {
#[derive(Debug, Copy, Clone, PartialEq, Eq)] #[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct DummyTestSyntaxContext; pub struct DummyTestSyntaxContext;
impl SyntaxContext for DummyTestSyntaxContext {
const DUMMY: Self = DummyTestSyntaxContext;
}
pub struct DummyTestSpanMap; pub struct DummyTestSpanMap;
@ -82,7 +78,7 @@ pub fn syntax_node_to_token_tree<Ctx, SpanMap>(
) -> tt::Subtree<SpanData<Ctx>> ) -> tt::Subtree<SpanData<Ctx>>
where where
SpanData<Ctx>: Span, SpanData<Ctx>: Span,
Ctx: SyntaxContext, Ctx: Copy,
SpanMap: SpanMapper<SpanData<Ctx>>, SpanMap: SpanMapper<SpanData<Ctx>>,
{ {
let mut c = Converter::new(node, map, Default::default(), Default::default(), span); let mut c = Converter::new(node, map, Default::default(), Default::default(), span);
@ -102,7 +98,7 @@ pub fn syntax_node_to_token_tree_modified<Ctx, SpanMap>(
where where
SpanMap: SpanMapper<SpanData<Ctx>>, SpanMap: SpanMapper<SpanData<Ctx>>,
SpanData<Ctx>: Span, SpanData<Ctx>: Span,
Ctx: SyntaxContext, Ctx: Copy,
{ {
let mut c = Converter::new(node, map, append, remove, call_site); let mut c = Converter::new(node, map, append, remove, call_site);
convert_tokens(&mut c) convert_tokens(&mut c)
@ -128,7 +124,7 @@ pub fn token_tree_to_syntax_node<Ctx>(
) -> (Parse<SyntaxNode>, SpanMap<SpanData<Ctx>>) ) -> (Parse<SyntaxNode>, SpanMap<SpanData<Ctx>>)
where where
SpanData<Ctx>: Span, SpanData<Ctx>: Span,
Ctx: SyntaxContext, Ctx: Copy,
{ {
let buffer = match tt { let buffer = match tt {
tt::Subtree { tt::Subtree {
@ -165,7 +161,7 @@ pub fn parse_to_token_tree<Ctx>(
) -> Option<tt::Subtree<SpanData<Ctx>>> ) -> Option<tt::Subtree<SpanData<Ctx>>>
where where
SpanData<Ctx>: Span, SpanData<Ctx>: Span,
Ctx: SyntaxContext, Ctx: Copy,
{ {
let lexed = parser::LexedStr::new(text); let lexed = parser::LexedStr::new(text);
if lexed.errors().next().is_some() { if lexed.errors().next().is_some() {
@ -531,7 +527,7 @@ impl<S: Span> SrcToken<StaticRawConverter<'_, S>, S> for usize {
} }
} }
impl<Ctx: SyntaxContext> TokenConverter<SpanData<Ctx>> for RawConverter<'_, Ctx> impl<Ctx: Copy> TokenConverter<SpanData<Ctx>> for RawConverter<'_, Ctx>
where where
SpanData<Ctx>: Span, SpanData<Ctx>: Span,
{ {

View file

@ -54,9 +54,7 @@ impl std::fmt::Debug for TokenId {
} }
} }
impl tt::Span for TokenId { impl tt::Span for TokenId {}
const DUMMY: Self = TokenId(!0);
}
#[derive(Serialize, Deserialize, Debug)] #[derive(Serialize, Deserialize, Debug)]
pub struct FlatTree { pub struct FlatTree {

View file

@ -11,34 +11,10 @@ use stdx::impl_from;
pub use smol_str::SmolStr; pub use smol_str::SmolStr;
pub use text_size::{TextRange, TextSize}; pub use text_size::{TextRange, TextSize};
pub trait Span: std::fmt::Debug + Copy + Sized + Eq { pub trait Span: std::fmt::Debug + Copy + Sized + Eq {}
// FIXME: Should not exist. Dummy spans will always be wrong if they leak somewhere. Instead,
// the call site or def site spans should be used in relevant places, its just that we don't
// expose those everywhere in the yet.
#[deprecated = "dummy spans will panic if surfaced incorrectly, as such they should be replaced appropriately"]
const DUMMY: Self;
}
pub trait SyntaxContext: std::fmt::Debug + Copy + Sized + Eq { impl<Ctx> Span for span::SpanData<Ctx> where span::SpanData<Ctx>: std::fmt::Debug + Copy + Sized + Eq
#[deprecated = "dummy spans will panic if surfaced incorrectly, as such they should be replaced appropriately"] {}
const DUMMY: Self;
}
impl<Ctx: SyntaxContext> Span for span::SpanData<Ctx> {
#[allow(deprecated)]
const DUMMY: Self = span::SpanData {
range: TextRange::empty(TextSize::new(0)),
anchor: span::SpanAnchor {
file_id: span::FileId::BOGUS,
ast_id: span::ROOT_ERASED_FILE_AST_ID,
},
ctx: Ctx::DUMMY,
};
}
impl SyntaxContext for span::SyntaxContextId {
const DUMMY: Self = Self::ROOT;
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)] #[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum TokenTree<S> { pub enum TokenTree<S> {