4
4
from typing import TYPE_CHECKING
5
5
6
6
from codegen .sdk .core .autocommit import commiter , mover , reader , writer
7
+ from codegen .sdk .core .dataclasses .usage import UsageKind
7
8
from codegen .sdk .core .file import SourceFile
8
9
from codegen .sdk .core .interfaces .exportable import Exportable
9
10
from codegen .sdk .enums import ImportType , ProgrammingLanguage , SymbolType
@@ -433,6 +434,24 @@ def remove_unused_imports(self) -> None:
433
434
434
435
self .G .commit_transactions ()
435
436
437
+ def _is_export_used (self , export : TSExport ) -> bool :
438
+ # Get all symbol usages
439
+ usages = export .symbol_usages ()
440
+
441
+ # If there are any usages, the export is used
442
+ if usages :
443
+ return True
444
+
445
+ # Check if this is a re-export that's used elsewhere
446
+ if export .is_reexport ():
447
+ # Get the original symbol
448
+ original = export .resolved_symbol
449
+ if original :
450
+ # Check usages of the original symbol
451
+ return bool (original .symbol_usages ())
452
+
453
+ return False
454
+
436
455
@writer
437
456
def remove_unused_exports (self ) -> None :
438
457
"""Removes unused exports from the file.
@@ -453,24 +472,14 @@ def remove_unused_exports(self) -> None:
453
472
454
473
for export in self .exports :
455
474
# Skip type exports
456
- if export .is_type_export ():
457
- continue
458
-
459
- # Skip default exports
460
- if export .is_default_export ():
475
+ if export .is_type_export () or export .is_default_export ():
461
476
continue
462
477
463
478
# Check if export is used
464
- has_usages = bool (export .symbol_usages )
465
-
466
- # For re-exports, check if the re-exported symbol is used
467
- if export .is_reexport ():
468
- if export .resolved_symbol and export .resolved_symbol .symbol_usages :
469
- continue
479
+ if self ._is_export_used (export ):
480
+ continue
470
481
471
- # Remove if no usages found
472
- if not has_usages :
473
- exports_to_remove .append (export )
482
+ exports_to_remove .append (export )
474
483
475
484
# Remove unused exports
476
485
for export in exports_to_remove :
0 commit comments