Skip to content

Commit 6e952b6

Browse files
committed
feat(semantic): put jsdoc behind linter feature, remove runtime flag
1 parent 134607e commit 6e952b6

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

crates/oxc_semantic/src/builder.rs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,14 @@ use oxc_syntax::{
2424
symbol::{SymbolFlags, SymbolId},
2525
};
2626

27+
#[cfg(feature = "linter")]
28+
use crate::jsdoc::JSDocBuilder;
2729
use crate::{
28-
JSDocFinder, Semantic,
30+
Semantic,
2931
binder::{Binder, ModuleInstanceState},
3032
checker,
3133
class::ClassTableBuilder,
3234
diagnostics::redeclaration,
33-
jsdoc::JSDocBuilder,
3435
label::UnusedLabels,
3536
node::AstNodes,
3637
scoping::{Bindings, Scoping},
@@ -89,7 +90,7 @@ pub struct SemanticBuilder<'a> {
8990
pub(crate) unresolved_references: UnresolvedReferencesStack<'a>,
9091

9192
unused_labels: UnusedLabels<'a>,
92-
build_jsdoc: bool,
93+
#[cfg(feature = "linter")]
9394
jsdoc: JSDocBuilder<'a>,
9495
stats: Option<Stats>,
9596
excess_capacity: f64,
@@ -143,7 +144,7 @@ impl<'a> SemanticBuilder<'a> {
143144
scoping,
144145
unresolved_references: UnresolvedReferencesStack::new(),
145146
unused_labels: UnusedLabels::default(),
146-
build_jsdoc: false,
147+
#[cfg(feature = "linter")]
147148
jsdoc: JSDocBuilder::default(),
148149
stats: None,
149150
excess_capacity: 0.0,
@@ -171,13 +172,6 @@ impl<'a> SemanticBuilder<'a> {
171172
self
172173
}
173174

174-
/// Enable/disable JSDoc parsing.
175-
#[must_use]
176-
pub fn with_build_jsdoc(mut self, yes: bool) -> Self {
177-
self.build_jsdoc = yes;
178-
self
179-
}
180-
181175
/// Enable or disable building a [`ControlFlowGraph`].
182176
///
183177
/// [`ControlFlowGraph`]: oxc_cfg::ControlFlowGraph
@@ -236,7 +230,8 @@ impl<'a> SemanticBuilder<'a> {
236230
pub fn build(mut self, program: &'a Program<'a>) -> SemanticBuilderReturn<'a> {
237231
self.source_text = program.source_text;
238232
self.source_type = program.source_type;
239-
if self.build_jsdoc {
233+
#[cfg(feature = "linter")]
234+
{
240235
self.jsdoc = JSDocBuilder::new(self.source_text, &program.comments);
241236
}
242237

@@ -290,7 +285,8 @@ impl<'a> SemanticBuilder<'a> {
290285
self.unresolved_references.into_root().into_iter().map(|(k, v)| (k.as_str(), v)),
291286
);
292287

293-
let jsdoc = if self.build_jsdoc { self.jsdoc.build() } else { JSDocFinder::default() };
288+
#[cfg(feature = "linter")]
289+
let jsdoc = self.jsdoc.build();
294290

295291
#[cfg(debug_assertions)]
296292
self.unused_labels.assert_empty();
@@ -303,6 +299,7 @@ impl<'a> SemanticBuilder<'a> {
303299
nodes: self.nodes,
304300
scoping: self.scoping,
305301
classes: self.class_table_builder.build(),
302+
#[cfg(feature = "linter")]
306303
jsdoc,
307304
unused_labels: self.unused_labels.labels,
308305
#[cfg(feature = "cfg")]
@@ -327,8 +324,12 @@ impl<'a> SemanticBuilder<'a> {
327324
}
328325

329326
fn create_ast_node(&mut self, kind: AstKind<'a>) {
327+
#[cfg(not(feature = "linter"))]
328+
let flags = self.current_node_flags;
329+
#[cfg(feature = "linter")]
330330
let mut flags = self.current_node_flags;
331-
if self.build_jsdoc && self.jsdoc.retrieve_attached_jsdoc(&kind) {
331+
#[cfg(feature = "linter")]
332+
if self.jsdoc.retrieve_attached_jsdoc(&kind) {
332333
flags |= NodeFlags::JSDoc;
333334
}
334335

crates/oxc_semantic/src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ mod checker;
3232
mod class;
3333
mod diagnostics;
3434
mod is_global_reference;
35+
#[cfg(feature = "linter")]
3536
mod jsdoc;
3637
mod label;
3738
mod node;
@@ -43,6 +44,7 @@ mod unresolved_stack;
4344
pub use ast_types_bitset::AstTypesBitset;
4445
pub use builder::{SemanticBuilder, SemanticBuilderReturn};
4546
pub use is_global_reference::IsGlobalReference;
47+
#[cfg(feature = "linter")]
4648
pub use jsdoc::{JSDoc, JSDocFinder, JSDocTag};
4749
pub use node::{AstNode, AstNodes};
4850
pub use scoping::Scoping;
@@ -80,6 +82,7 @@ pub struct Semantic<'a> {
8082
irregular_whitespaces: Box<[Span]>,
8183

8284
/// Parsed JSDoc comments.
85+
#[cfg(feature = "linter")]
8386
jsdoc: JSDocFinder<'a>,
8487

8588
unused_labels: Vec<NodeId>,
@@ -162,6 +165,7 @@ impl<'a> Semantic<'a> {
162165
/// Parsed [`JSDoc`] comments.
163166
///
164167
/// Will be empty if JSDoc parsing is disabled.
168+
#[cfg(feature = "linter")]
165169
pub fn jsdoc(&self) -> &JSDocFinder<'a> {
166170
&self.jsdoc
167171
}

0 commit comments

Comments
 (0)