mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 13:33:31 +00:00
Remove SyntaxContext trait
This commit is contained in:
parent
7b804552a5
commit
f211a40f1f
3 changed files with 10 additions and 40 deletions
|
@ -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,
|
||||||
{
|
{
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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> {
|
||||||
|
|
Loading…
Reference in a new issue