Skip to content

Commit 881de38

Browse files
committedJan 27, 2025·
Allow nsTypes to always consider all enums (the actual fix for #927)
1 parent 6954b6f commit 881de38

File tree

5 files changed

+33
-4
lines changed

5 files changed

+33
-4
lines changed
 

‎packages/knip/fixtures/enum-members-enumerated/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { Fruits } from './fruits';
22
import { Direction } from './directions';
33

4+
console.log(Fruits.apple);
5+
46
Object.keys(Fruits);
57
Object.values(Fruits);
68
Object.entries(Fruits);

‎packages/knip/fixtures/tags/index.ts

-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ import * as NS from './tags.js';
22
import { MyClass, MyEnum } from './tags.js';
33
import { ignored, notIgnored } from './unimported.js';
44

5-
const x: MyEnum = {};
6-
75
const xm = MyEnum.UsedUntagged;
86

97
const y = new MyClass();

‎packages/knip/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,7 @@ export const main = async (unresolvedConfiguration: CommandLineOptions) => {
473473

474474
if (isReferenced) {
475475
if (report.enumMembers && exportedItem.type === 'enum') {
476+
if (!report.nsTypes && importsForExport.refs.has(identifier)) continue;
476477
if (hasStrictlyEnumReferences(importsForExport, identifier)) continue;
477478

478479
for (const member of exportedItem.members) {

‎packages/knip/test/enum-members.test.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,10 @@ test('Find unused enum members (isIncludeEntryExports)', async () => {
3535
assert.equal(Object.keys(issues.enumMembers['members.ts']).length, 2);
3636
assert(issues.enumMembers['members.ts']['MyEnum.B_Unused']);
3737
assert(issues.enumMembers['members.ts']['MyEnum.D_Key']);
38-
assert(issues.enumMembers['index.ts']['EntryEnum.UnusedMemberInEntryEnum']);
3938

4039
assert.deepEqual(counters, {
4140
...baseCounters,
42-
enumMembers: 3,
41+
enumMembers: 2,
4342
processed: 2,
4443
total: 2,
4544
});

‎packages/knip/test/exports-special-characters.test.ts

+29
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,35 @@ test('Handle special characters in named exports and members', async () => {
2525
assert(issues.classMembers['exports.ts']['DollarMembers.$method']);
2626
assert(issues.classMembers['exports.ts']['DollarMembers.method$']);
2727

28+
assert.deepEqual(counters, {
29+
...baseCounters,
30+
classMembers: 4,
31+
exports: 4,
32+
types: 1,
33+
processed: 2,
34+
total: 2,
35+
});
36+
});
37+
38+
test('Handle special characters in named exports and members (nsTypes)', async () => {
39+
const { issues, counters } = await main({
40+
...baseArguments,
41+
cwd,
42+
includedIssueTypes: ['nsTypes'],
43+
});
44+
45+
assert(issues.exports['exports.ts']['$dollar']);
46+
assert(issues.exports['exports.ts']['dollar$']);
47+
assert(issues.exports['exports.ts']['_underscore']);
48+
assert(issues.exports['exports.ts']['$Dollar']);
49+
50+
assert(issues.types['exports.ts']['$DollarType']);
51+
52+
assert(issues.classMembers['exports.ts']['DollarMembers.$member']);
53+
assert(issues.classMembers['exports.ts']['DollarMembers.member$']);
54+
assert(issues.classMembers['exports.ts']['DollarMembers.$method']);
55+
assert(issues.classMembers['exports.ts']['DollarMembers.method$']);
56+
2857
assert(issues.enumMembers['exports.ts']['Characters.-']);
2958
assert(issues.enumMembers['exports.ts']['Characters.,']);
3059
assert(issues.enumMembers['exports.ts']['Characters.:']);

0 commit comments

Comments
 (0)
Please sign in to comment.