mirror of
https://github.com/oxc-project/oxc.git
synced 2026-11-04 10:29:58 +00:00
perf(parser): store definite assertion offset (#23167)
- Store the definite assignment assertion token position as a `u32` offset instead of a full `Span`. - Reconstruct the one-character diagnostic span only when emitting definite-assignment diagnostics.
This commit is contained in:
1 parent
a7c1c9be05
commit
a082180017
1 file changed
+5
-4
@@ -1,6 +1,6 @@
|
||||
use oxc_allocator::Box;
|
||||
use oxc_ast::ast::*;
|
||||
use oxc_span::GetSpan;
|
||||
use oxc_span::{GetSpan, Span};
|
||||
|
||||
use super::VariableDeclarationParent;
|
||||
use crate::{ParserConfig as Config, ParserImpl, StatementContext, diagnostics, lexer::Kind};
|
||||
@@ -114,9 +114,9 @@ impl<'a, C: Config> ParserImpl<'a, C> {
|
||||
&& !self.cur_token().is_on_new_line()
|
||||
&& self.at(Kind::Bang)
|
||||
{
|
||||
let span = self.cur_token().span();
|
||||
let span_start = self.cur_token().start();
|
||||
self.bump_any();
|
||||
Some(span)
|
||||
Some(span_start)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
@@ -150,7 +150,8 @@ impl<'a, C: Config> ParserImpl<'a, C> {
|
||||
if decl_parent == VariableDeclarationParent::Statement {
|
||||
self.check_missing_initializer(&decl);
|
||||
}
|
||||
if let Some(span) = definite {
|
||||
if let Some(definite_token_start) = definite {
|
||||
let span = Span::sized(definite_token_start, 1);
|
||||
if decl.init.is_some() {
|
||||
self.error(diagnostics::variable_declarator_definite(span));
|
||||
} else if decl.type_annotation.is_none() {
|
||||
|
||||
Reference in new issue
Block a user