diff options
author | 2021-11-02 22:53:26 -0700 | |
---|---|---|
committer | 2021-11-02 22:53:26 -0700 | |
commit | 5537c03569e45bf73e490f58ac86d5cf661fa4ab (patch) | |
tree | 8ea6373274a3154281fc695a7008ce03a3010ec9 | |
parent | 4ab7c8240523dfff1026ea4354943ac1d8ee95ac (diff) | |
download | bun-5537c03569e45bf73e490f58ac86d5cf661fa4ab.tar.gz bun-5537c03569e45bf73e490f58ac86d5cf661fa4ab.tar.zst bun-5537c03569e45bf73e490f58ac86d5cf661fa4ab.zip |
Fixes https://github.com/Jarred-Sumner/bun/issues/28
-rw-r--r-- | src/import_record.zig | 2 | ||||
-rw-r--r-- | src/js_parser/js_parser.zig | 10 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/import_record.zig b/src/import_record.zig index adb6ea625..aa82e4731 100644 --- a/src/import_record.zig +++ b/src/import_record.zig @@ -97,6 +97,8 @@ pub const ImportRecord = struct { // If true, this was originally written as a bare "import 'file'" statement was_originally_bare_import: bool = false, + was_originally_require: bool = false, + kind: ImportKind, pub const PrintMode = enum { diff --git a/src/js_parser/js_parser.zig b/src/js_parser/js_parser.zig index 84e6b0b13..11836bd6e 100644 --- a/src/js_parser/js_parser.zig +++ b/src/js_parser/js_parser.zig @@ -428,9 +428,9 @@ pub const ImportScanner = struct { // This is a breaking change though. We can make it an option with some guardrail // so maybe if it errors, it shows a suggestion "retry without trimming unused imports" if (p.options.ts and found_imports and is_unused_in_typescript and !p.options.preserve_unused_imports_ts) { - // Ignore import records with a pre-filled source index. These are - // for injected files and we definitely do not want to trim these. - if (!record.is_internal) { + // internal imports are presumed to be always used + // require statements cannot be stripped + if (!record.is_internal and !record.was_originally_require) { record.is_unused = true; continue; } @@ -3211,6 +3211,10 @@ pub fn NewParser( if (!p.options.transform_require_to_import) { return p.e(E.Require{ .import_record_index = import_record_index }, arg.loc); } + + p.import_records.items[import_record_index].was_originally_require = true; + p.import_records.items[import_record_index].contains_import_star = true; + const symbol_name = p.import_records.items[import_record_index].path.name.nonUniqueNameString(p.allocator); const cjs_import_name = std.fmt.allocPrint( p.allocator, |