mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
Fixed typos in code comments
This commit is contained in:
parent
939ca83b34
commit
21f8239ac8
23 changed files with 42 additions and 42 deletions
|
@ -1,6 +1,6 @@
|
||||||
//! Utility module for converting between hir_def ids and code_model wrappers.
|
//! Utility module for converting between hir_def ids and code_model wrappers.
|
||||||
//!
|
//!
|
||||||
//! It's unclear if we need this long-term, but it's definitelly useful while we
|
//! It's unclear if we need this long-term, but it's definitely useful while we
|
||||||
//! are splitting the hir.
|
//! are splitting the hir.
|
||||||
|
|
||||||
use hir_def::{
|
use hir_def::{
|
||||||
|
|
|
@ -581,7 +581,7 @@ impl ExprCollector<'_> {
|
||||||
match res.value {
|
match res.value {
|
||||||
Some((mark, expansion)) => {
|
Some((mark, expansion)) => {
|
||||||
// FIXME: Statements are too complicated to recover from error for now.
|
// FIXME: Statements are too complicated to recover from error for now.
|
||||||
// It is because we don't have any hygenine for local variable expansion right now.
|
// It is because we don't have any hygiene for local variable expansion right now.
|
||||||
if T::can_cast(syntax::SyntaxKind::MACRO_STMTS) && res.err.is_some() {
|
if T::can_cast(syntax::SyntaxKind::MACRO_STMTS) && res.err.is_some() {
|
||||||
self.expander.exit(self.db, mark);
|
self.expander.exit(self.db, mark);
|
||||||
collector(self, None);
|
collector(self, None);
|
||||||
|
@ -959,7 +959,7 @@ impl ExprCollector<'_> {
|
||||||
|
|
||||||
fn collect_tuple_pat(&mut self, args: AstChildren<ast::Pat>) -> (Vec<PatId>, Option<usize>) {
|
fn collect_tuple_pat(&mut self, args: AstChildren<ast::Pat>) -> (Vec<PatId>, Option<usize>) {
|
||||||
// Find the location of the `..`, if there is one. Note that we do not
|
// Find the location of the `..`, if there is one. Note that we do not
|
||||||
// consider the possiblity of there being multiple `..` here.
|
// consider the possibility of there being multiple `..` here.
|
||||||
let ellipsis = args.clone().position(|p| matches!(p, ast::Pat::RestPat(_)));
|
let ellipsis = args.clone().position(|p| matches!(p, ast::Pat::RestPat(_)));
|
||||||
// We want to skip the `..` pattern here, since we account for it above.
|
// We want to skip the `..` pattern here, since we account for it above.
|
||||||
let args = args
|
let args = args
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
//! This module describes hir-level representation of expressions.
|
//! This module describes hir-level representation of expressions.
|
||||||
//!
|
//!
|
||||||
//! This representaion is:
|
//! This representation is:
|
||||||
//!
|
//!
|
||||||
//! 1. Identity-based. Each expression has an `id`, so we can distinguish
|
//! 1. Identity-based. Each expression has an `id`, so we can distinguish
|
||||||
//! between different `1` in `1 + 1`.
|
//! between different `1` in `1 + 1`.
|
||||||
|
|
|
@ -267,7 +267,7 @@ impl DefCollector<'_> {
|
||||||
|
|
||||||
// Resolve all indeterminate resolved imports again
|
// Resolve all indeterminate resolved imports again
|
||||||
// As some of the macros will expand newly import shadowing partial resolved imports
|
// As some of the macros will expand newly import shadowing partial resolved imports
|
||||||
// FIXME: We maybe could skip this, if we handle the Indetermine imports in `resolve_imports`
|
// FIXME: We maybe could skip this, if we handle the indeterminate imports in `resolve_imports`
|
||||||
// correctly
|
// correctly
|
||||||
let partial_resolved = self.resolved_imports.iter().filter_map(|directive| {
|
let partial_resolved = self.resolved_imports.iter().filter_map(|directive| {
|
||||||
if let PartialResolvedImport::Indeterminate(_) = directive.status {
|
if let PartialResolvedImport::Indeterminate(_) = directive.status {
|
||||||
|
@ -402,7 +402,7 @@ impl DefCollector<'_> {
|
||||||
|
|
||||||
/// Define a proc macro
|
/// Define a proc macro
|
||||||
///
|
///
|
||||||
/// A proc macro is similar to normal macro scope, but it would not visiable in legacy textual scoped.
|
/// A proc macro is similar to normal macro scope, but it would not visible in legacy textual scoped.
|
||||||
/// And unconditionally exported.
|
/// And unconditionally exported.
|
||||||
fn define_proc_macro(&mut self, name: Name, macro_: MacroDefId) {
|
fn define_proc_macro(&mut self, name: Name, macro_: MacroDefId) {
|
||||||
self.update(
|
self.update(
|
||||||
|
@ -592,7 +592,7 @@ impl DefCollector<'_> {
|
||||||
// XXX: urgh, so this works by accident! Here, we look at
|
// XXX: urgh, so this works by accident! Here, we look at
|
||||||
// the enum data, and, in theory, this might require us to
|
// the enum data, and, in theory, this might require us to
|
||||||
// look back at the crate_def_map, creating a cycle. For
|
// look back at the crate_def_map, creating a cycle. For
|
||||||
// example, `enum E { crate::some_macro!(); }`. Luckely, the
|
// example, `enum E { crate::some_macro!(); }`. Luckily, the
|
||||||
// only kind of macro that is allowed inside enum is a
|
// only kind of macro that is allowed inside enum is a
|
||||||
// `cfg_macro`, and we don't need to run name resolution for
|
// `cfg_macro`, and we don't need to run name resolution for
|
||||||
// it, but this is sheer luck!
|
// it, but this is sheer luck!
|
||||||
|
@ -655,7 +655,7 @@ impl DefCollector<'_> {
|
||||||
&mut self,
|
&mut self,
|
||||||
module_id: LocalModuleId,
|
module_id: LocalModuleId,
|
||||||
resolutions: &[(Option<Name>, PerNs)],
|
resolutions: &[(Option<Name>, PerNs)],
|
||||||
// All resolutions are imported with this visibility; the visibilies in
|
// All resolutions are imported with this visibility; the visibilities in
|
||||||
// the `PerNs` values are ignored and overwritten
|
// the `PerNs` values are ignored and overwritten
|
||||||
vis: Visibility,
|
vis: Visibility,
|
||||||
import_type: ImportType,
|
import_type: ImportType,
|
||||||
|
|
|
@ -27,7 +27,7 @@ use crate::{
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default)]
|
#[derive(Debug, Clone, Default)]
|
||||||
pub struct Resolver {
|
pub struct Resolver {
|
||||||
// FIXME: all usages generally call `.rev`, so maybe reverse once in consturciton?
|
// FIXME: all usages generally call `.rev`, so maybe reverse once in construction?
|
||||||
scopes: Vec<Scope>,
|
scopes: Vec<Scope>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ impl TokenExpander {
|
||||||
// FIXME switch these to ExpandResult as well
|
// FIXME switch these to ExpandResult as well
|
||||||
TokenExpander::BuiltinDerive(it) => it.expand(db, id, tt).into(),
|
TokenExpander::BuiltinDerive(it) => it.expand(db, id, tt).into(),
|
||||||
TokenExpander::ProcMacro(_) => {
|
TokenExpander::ProcMacro(_) => {
|
||||||
// We store the result in salsa db to prevent non-determinisc behavior in
|
// We store the result in salsa db to prevent non-deterministic behavior in
|
||||||
// some proc-macro implementation
|
// some proc-macro implementation
|
||||||
// See #4315 for details
|
// See #4315 for details
|
||||||
db.expand_proc_macro(id.into()).into()
|
db.expand_proc_macro(id.into()).into()
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
//! The algorithm implemented here is a modified version of the one described in
|
//! The algorithm implemented here is a modified version of the one described in
|
||||||
//! <http://moscova.inria.fr/~maranget/papers/warn/index.html>.
|
//! <http://moscova.inria.fr/~maranget/papers/warn/index.html>.
|
||||||
//! However, to save future implementors from reading the original paper, we
|
//! However, to save future implementors from reading the original paper, we
|
||||||
//! summarise the algorithm here to hopefully save time and be a little clearer
|
//! summarize the algorithm here to hopefully save time and be a little clearer
|
||||||
//! (without being so rigorous).
|
//! (without being so rigorous).
|
||||||
//!
|
//!
|
||||||
//! The core of the algorithm revolves about a "usefulness" check. In particular, we
|
//! The core of the algorithm revolves about a "usefulness" check. In particular, we
|
||||||
|
@ -132,7 +132,7 @@
|
||||||
//! The algorithm is inductive (on the number of columns: i.e., components of tuple patterns).
|
//! The algorithm is inductive (on the number of columns: i.e., components of tuple patterns).
|
||||||
//! That means we're going to check the components from left-to-right, so the algorithm
|
//! That means we're going to check the components from left-to-right, so the algorithm
|
||||||
//! operates principally on the first component of the matrix and new pattern-stack `p`.
|
//! operates principally on the first component of the matrix and new pattern-stack `p`.
|
||||||
//! This algorithm is realised in the `is_useful` function.
|
//! This algorithm is realized in the `is_useful` function.
|
||||||
//!
|
//!
|
||||||
//! Base case (`n = 0`, i.e., an empty tuple pattern):
|
//! Base case (`n = 0`, i.e., an empty tuple pattern):
|
||||||
//! - If `P` already contains an empty pattern (i.e., if the number of patterns `m > 0`), then
|
//! - If `P` already contains an empty pattern (i.e., if the number of patterns `m > 0`), then
|
||||||
|
|
|
@ -39,7 +39,7 @@ pub(crate) fn rewrite_links(db: &RootDatabase, markdown: &str, definition: &Defi
|
||||||
if target.contains("://") {
|
if target.contains("://") {
|
||||||
(target.to_string(), title.to_string())
|
(target.to_string(), title.to_string())
|
||||||
} else {
|
} else {
|
||||||
// Two posibilities:
|
// Two possibilities:
|
||||||
// * path-based links: `../../module/struct.MyStruct.html`
|
// * path-based links: `../../module/struct.MyStruct.html`
|
||||||
// * module-based links (AKA intra-doc links): `super::super::module::MyStruct`
|
// * module-based links (AKA intra-doc links): `super::super::module::MyStruct`
|
||||||
if let Some(rewritten) = rewrite_intra_doc_link(db, *definition, target, title) {
|
if let Some(rewritten) = rewrite_intra_doc_link(db, *definition, target, title) {
|
||||||
|
@ -420,7 +420,7 @@ fn get_symbol_fragment(db: &dyn HirDatabase, field_or_assoc: &FieldOrAssocItem)
|
||||||
function.as_assoc_item(db).map(|assoc| assoc.container(db)),
|
function.as_assoc_item(db).map(|assoc| assoc.container(db)),
|
||||||
Some(AssocItemContainer::Trait(..))
|
Some(AssocItemContainer::Trait(..))
|
||||||
);
|
);
|
||||||
// This distinction may get more complicated when specialisation is available.
|
// This distinction may get more complicated when specialization is available.
|
||||||
// Rustdoc makes this decision based on whether a method 'has defaultness'.
|
// Rustdoc makes this decision based on whether a method 'has defaultness'.
|
||||||
// Currently this is only the case for provided trait methods.
|
// Currently this is only the case for provided trait methods.
|
||||||
if is_trait_method && !function.has_body(db) {
|
if is_trait_method && !function.has_body(db) {
|
||||||
|
|
|
@ -1951,16 +1951,16 @@ struct S {
|
||||||
/// Test cases:
|
/// Test cases:
|
||||||
/// case 1. bare URL: https://www.example.com/
|
/// case 1. bare URL: https://www.example.com/
|
||||||
/// case 2. inline URL with title: [example](https://www.example.com/)
|
/// case 2. inline URL with title: [example](https://www.example.com/)
|
||||||
/// case 3. code refrence: [`Result`]
|
/// case 3. code reference: [`Result`]
|
||||||
/// case 4. code refrence but miss footnote: [`String`]
|
/// case 4. code reference but miss footnote: [`String`]
|
||||||
/// case 5. autolink: <http://www.example.com/>
|
/// case 5. autolink: <http://www.example.com/>
|
||||||
/// case 6. email address: <test@example.com>
|
/// case 6. email address: <test@example.com>
|
||||||
/// case 7. refrence: [example][example]
|
/// case 7. reference: [example][example]
|
||||||
/// case 8. collapsed link: [example][]
|
/// case 8. collapsed link: [example][]
|
||||||
/// case 9. shortcut link: [example]
|
/// case 9. shortcut link: [example]
|
||||||
/// case 10. inline without URL: [example]()
|
/// case 10. inline without URL: [example]()
|
||||||
/// case 11. refrence: [foo][foo]
|
/// case 11. reference: [foo][foo]
|
||||||
/// case 12. refrence: [foo][bar]
|
/// case 12. reference: [foo][bar]
|
||||||
/// case 13. collapsed link: [foo][]
|
/// case 13. collapsed link: [foo][]
|
||||||
/// case 14. shortcut link: [foo]
|
/// case 14. shortcut link: [foo]
|
||||||
/// case 15. inline without URL: [foo]()
|
/// case 15. inline without URL: [foo]()
|
||||||
|
@ -1987,16 +1987,16 @@ pub fn fo$0o() {}
|
||||||
Test cases:
|
Test cases:
|
||||||
case 1. bare URL: https://www.example.com/
|
case 1. bare URL: https://www.example.com/
|
||||||
case 2. inline URL with title: [example](https://www.example.com/)
|
case 2. inline URL with title: [example](https://www.example.com/)
|
||||||
case 3. code refrence: `Result`
|
case 3. code reference: `Result`
|
||||||
case 4. code refrence but miss footnote: `String`
|
case 4. code reference but miss footnote: `String`
|
||||||
case 5. autolink: http://www.example.com/
|
case 5. autolink: http://www.example.com/
|
||||||
case 6. email address: test@example.com
|
case 6. email address: test@example.com
|
||||||
case 7. refrence: example
|
case 7. reference: example
|
||||||
case 8. collapsed link: example
|
case 8. collapsed link: example
|
||||||
case 9. shortcut link: example
|
case 9. shortcut link: example
|
||||||
case 10. inline without URL: example
|
case 10. inline without URL: example
|
||||||
case 11. refrence: foo
|
case 11. reference: foo
|
||||||
case 12. refrence: foo
|
case 12. reference: foo
|
||||||
case 13. collapsed link: foo
|
case 13. collapsed link: foo
|
||||||
case 14. shortcut link: foo
|
case 14. shortcut link: foo
|
||||||
case 15. inline without URL: foo
|
case 15. inline without URL: foo
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
//! or `ast::NameRef`. If it's a `ast::NameRef`, at the classification step we
|
//! or `ast::NameRef`. If it's a `ast::NameRef`, at the classification step we
|
||||||
//! try to resolve the direct tree parent of this element, otherwise we
|
//! try to resolve the direct tree parent of this element, otherwise we
|
||||||
//! already have a definition and just need to get its HIR together with
|
//! already have a definition and just need to get its HIR together with
|
||||||
//! some information that is needed for futher steps of searching.
|
//! some information that is needed for further steps of searching.
|
||||||
//! After that, we collect files that might contain references and look
|
//! After that, we collect files that might contain references and look
|
||||||
//! for text occurrences of the identifier. If there's an `ast::NameRef`
|
//! for text occurrences of the identifier. If there's an `ast::NameRef`
|
||||||
//! at the index that the match starts at and its tree parent is
|
//! at the index that the match starts at and its tree parent is
|
||||||
|
|
|
@ -945,7 +945,7 @@ use crate::foo$0::FooContent;
|
||||||
//- /lib.rs
|
//- /lib.rs
|
||||||
mod fo$0o;
|
mod fo$0o;
|
||||||
//- /foo/mod.rs
|
//- /foo/mod.rs
|
||||||
// emtpy
|
// empty
|
||||||
"#,
|
"#,
|
||||||
expect![[r#"
|
expect![[r#"
|
||||||
RangeInfo {
|
RangeInfo {
|
||||||
|
@ -995,7 +995,7 @@ mod fo$0o;
|
||||||
mod outer { mod fo$0o; }
|
mod outer { mod fo$0o; }
|
||||||
|
|
||||||
//- /outer/foo.rs
|
//- /outer/foo.rs
|
||||||
// emtpy
|
// empty
|
||||||
"#,
|
"#,
|
||||||
expect![[r#"
|
expect![[r#"
|
||||||
RangeInfo {
|
RangeInfo {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
//! This module contains an import search funcionality that is provided to the assists module.
|
//! This module contains an import search functionality that is provided to the assists module.
|
||||||
//! Later, this should be moved away to a separate crate that is accessible from the assists module.
|
//! Later, this should be moved away to a separate crate that is accessible from the assists module.
|
||||||
|
|
||||||
use hir::{import_map, AsAssocItem, Crate, MacroDef, ModuleDef, Semantics};
|
use hir::{import_map, AsAssocItem, Crate, MacroDef, ModuleDef, Semantics};
|
||||||
|
|
|
@ -378,7 +378,7 @@ pub(super) fn match_repeat(
|
||||||
src: &mut TtIter,
|
src: &mut TtIter,
|
||||||
) -> Result<(), ExpandError> {
|
) -> Result<(), ExpandError> {
|
||||||
// Dirty hack to make macro-expansion terminate.
|
// Dirty hack to make macro-expansion terminate.
|
||||||
// This should be replaced by a propper macro-by-example implementation
|
// This should be replaced by a proper macro-by-example implementation
|
||||||
let mut limit = 65536;
|
let mut limit = 65536;
|
||||||
let mut counter = 0;
|
let mut counter = 0;
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ struct NestingState {
|
||||||
/// because there is no variable in use by the current repetition
|
/// because there is no variable in use by the current repetition
|
||||||
hit: bool,
|
hit: bool,
|
||||||
/// `at_end` is currently necessary to tell `expand_repeat` if it should stop
|
/// `at_end` is currently necessary to tell `expand_repeat` if it should stop
|
||||||
/// because there is no more value avaible for the current repetition
|
/// because there is no more value available for the current repetition
|
||||||
at_end: bool,
|
at_end: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -149,7 +149,7 @@ impl TokenMap {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn remove_delim(&mut self, idx: usize) {
|
fn remove_delim(&mut self, idx: usize) {
|
||||||
// FIXME: This could be accidently quadratic
|
// FIXME: This could be accidentally quadratic
|
||||||
self.entries.remove(idx);
|
self.entries.remove(idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ fn use_tree(p: &mut Parser, top_level: bool) {
|
||||||
// test use_tree_list
|
// test use_tree_list
|
||||||
// use {crate::path::from::root, or::path::from::crate_name}; // Rust 2018 (with a crate named `or`)
|
// use {crate::path::from::root, or::path::from::crate_name}; // Rust 2018 (with a crate named `or`)
|
||||||
// use {path::from::root}; // Rust 2015
|
// use {path::from::root}; // Rust 2015
|
||||||
// use ::{some::arbritrary::path}; // Rust 2015
|
// use ::{some::arbitrary::path}; // Rust 2015
|
||||||
// use ::{{{root::export}}}; // Nonsensical but perfectly legal nesting
|
// use ::{{{root::export}}}; // Nonsensical but perfectly legal nesting
|
||||||
T!['{'] => {
|
T!['{'] => {
|
||||||
use_tree_list(p);
|
use_tree_list(p);
|
||||||
|
|
|
@ -79,7 +79,7 @@ impl Message for Response {}
|
||||||
fn read_json(inp: &mut impl BufRead) -> io::Result<Option<String>> {
|
fn read_json(inp: &mut impl BufRead) -> io::Result<Option<String>> {
|
||||||
let mut buf = String::new();
|
let mut buf = String::new();
|
||||||
inp.read_line(&mut buf)?;
|
inp.read_line(&mut buf)?;
|
||||||
buf.pop(); // Remove traling '\n'
|
buf.pop(); // Remove trailing '\n'
|
||||||
Ok(match buf.len() {
|
Ok(match buf.len() {
|
||||||
0 => None,
|
0 => None,
|
||||||
_ => Some(buf),
|
_ => Some(buf),
|
||||||
|
|
|
@ -251,7 +251,7 @@ impl<S> DecodeMut<'_, '_, S> for String {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Simplied version of panic payloads, ignoring
|
/// Simplified version of panic payloads, ignoring
|
||||||
/// types other than `&'static str` and `String`.
|
/// types other than `&'static str` and `String`.
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum PanicMessage {
|
pub enum PanicMessage {
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
//! The lib-proc-macro server backend is `TokenStream`-agnostic, such that
|
//! The lib-proc-macro server backend is `TokenStream`-agnostic, such that
|
||||||
//! we could provide any TokenStream implementation.
|
//! we could provide any TokenStream implementation.
|
||||||
//! The original idea from fedochet is using proc-macro2 as backend,
|
//! The original idea from fedochet is using proc-macro2 as backend,
|
||||||
//! we use tt instead for better intergation with RA.
|
//! we use tt instead for better integration with RA.
|
||||||
//!
|
//!
|
||||||
//! FIXME: No span and source file information is implemented yet
|
//! FIXME: No span and source file information is implemented yet
|
||||||
|
|
||||||
|
|
|
@ -130,7 +130,7 @@ pub(crate) fn apply_document_changes(
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Checks that the edits inside the completion and the additional edits do not overlap.
|
/// Checks that the edits inside the completion and the additional edits do not overlap.
|
||||||
/// LSP explicitly forbits the additional edits to overlap both with the main edit and themselves.
|
/// LSP explicitly forbids the additional edits to overlap both with the main edit and themselves.
|
||||||
pub(crate) fn all_edits_are_disjoint(
|
pub(crate) fn all_edits_are_disjoint(
|
||||||
completion: &lsp_types::CompletionItem,
|
completion: &lsp_types::CompletionItem,
|
||||||
additional_edits: &[lsp_types::TextEdit],
|
additional_edits: &[lsp_types::TextEdit],
|
||||||
|
|
|
@ -241,7 +241,7 @@ pub fn wildcard_pat() -> ast::WildcardPat {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a tuple of patterns from an interator of patterns.
|
/// Creates a tuple of patterns from an iterator of patterns.
|
||||||
///
|
///
|
||||||
/// Invariant: `pats` must be length > 1
|
/// Invariant: `pats` must be length > 1
|
||||||
///
|
///
|
||||||
|
|
|
@ -24,7 +24,7 @@ pub struct Token {
|
||||||
/// Beware that it checks for shebang first and its length contributes to resulting
|
/// Beware that it checks for shebang first and its length contributes to resulting
|
||||||
/// tokens offsets.
|
/// tokens offsets.
|
||||||
pub fn tokenize(text: &str) -> (Vec<Token>, Vec<SyntaxError>) {
|
pub fn tokenize(text: &str) -> (Vec<Token>, Vec<SyntaxError>) {
|
||||||
// non-empty string is a precondtion of `rustc_lexer::strip_shebang()`.
|
// non-empty string is a precondition of `rustc_lexer::strip_shebang()`.
|
||||||
if text.is_empty() {
|
if text.is_empty() {
|
||||||
return Default::default();
|
return Default::default();
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ pub fn lex_single_syntax_kind(text: &str) -> Option<(SyntaxKind, Option<SyntaxEr
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The same as `lex_single_syntax_kind()` but returns only `SyntaxKind` and
|
/// The same as `lex_single_syntax_kind()` but returns only `SyntaxKind` and
|
||||||
/// returns `None` if any tokenization error occured.
|
/// returns `None` if any tokenization error occurred.
|
||||||
///
|
///
|
||||||
/// Beware that unescape errors are not checked at tokenization time.
|
/// Beware that unescape errors are not checked at tokenization time.
|
||||||
pub fn lex_single_valid_syntax_kind(text: &str) -> Option<SyntaxKind> {
|
pub fn lex_single_valid_syntax_kind(text: &str) -> Option<SyntaxKind> {
|
||||||
|
@ -96,7 +96,7 @@ pub fn lex_single_valid_syntax_kind(text: &str) -> Option<SyntaxKind> {
|
||||||
///
|
///
|
||||||
/// Beware that unescape errors are not checked at tokenization time.
|
/// Beware that unescape errors are not checked at tokenization time.
|
||||||
fn lex_first_token(text: &str) -> Option<(Token, Option<SyntaxError>)> {
|
fn lex_first_token(text: &str) -> Option<(Token, Option<SyntaxError>)> {
|
||||||
// non-empty string is a precondtion of `rustc_lexer::first_token()`.
|
// non-empty string is a precondition of `rustc_lexer::first_token()`.
|
||||||
if text.is_empty() {
|
if text.is_empty() {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
@ -117,7 +117,7 @@ fn rustc_token_kind_to_syntax_kind(
|
||||||
token_text: &str,
|
token_text: &str,
|
||||||
) -> (SyntaxKind, Option<&'static str>) {
|
) -> (SyntaxKind, Option<&'static str>) {
|
||||||
// A note on an intended tradeoff:
|
// A note on an intended tradeoff:
|
||||||
// We drop some useful infromation here (see patterns with double dots `..`)
|
// We drop some useful information here (see patterns with double dots `..`)
|
||||||
// Storing that info in `SyntaxKind` is not possible due to its layout requirements of
|
// Storing that info in `SyntaxKind` is not possible due to its layout requirements of
|
||||||
// being `u16` that come from `rowan::SyntaxKind`.
|
// being `u16` that come from `rowan::SyntaxKind`.
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ pub fn extract_offset(text: &str) -> (TextSize, String) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the offset of the first occurence of `$0` marker and the copy of `text`
|
/// Returns the offset of the first occurrence of `$0` marker and the copy of `text`
|
||||||
/// without the marker.
|
/// without the marker.
|
||||||
fn try_extract_offset(text: &str) -> Option<(TextSize, String)> {
|
fn try_extract_offset(text: &str) -> Option<(TextSize, String)> {
|
||||||
let cursor_pos = text.find(CURSOR_MARKER)?;
|
let cursor_pos = text.find(CURSOR_MARKER)?;
|
||||||
|
|
Loading…
Reference in a new issue