@@ -24,13 +24,14 @@ use oxc_syntax::{
2424 symbol:: { SymbolFlags , SymbolId } ,
2525} ;
2626
27+ #[ cfg( feature = "linter" ) ]
28+ use crate :: jsdoc:: JSDocBuilder ;
2729use 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
0 commit comments