diff --git a/CHANGELOG.md b/CHANGELOG.md index 69f853a15..03b9daaa6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Fixed `--validation.notDocumented` warnings for functions/methods, #1895. - Search results will no longer include random items when the search bar is empty, #1881. - Comments on overloaded constructors will now be detected in the same way that overloaded functions/methods are. +- Fixed `removeReflection` not completely removing reflections from the project. ### Thanks! diff --git a/src/lib/models/reflections/container.ts b/src/lib/models/reflections/container.ts index 840e04060..ae4455fcd 100644 --- a/src/lib/models/reflections/container.ts +++ b/src/lib/models/reflections/container.ts @@ -39,7 +39,7 @@ export class ContainerReflection extends Reflection { * @param callback The callback function that should be applied for each child reflection. */ override traverse(callback: TraverseCallback) { - for (const child of this.children ?? []) { + for (const child of this.children?.slice() || []) { if (callback(child, TraverseProperty.Children) === false) { return; } diff --git a/src/lib/models/reflections/declaration.ts b/src/lib/models/reflections/declaration.ts index e16647cba..bcd8d1e54 100644 --- a/src/lib/models/reflections/declaration.ts +++ b/src/lib/models/reflections/declaration.ts @@ -170,7 +170,7 @@ export class DeclarationReflection extends ContainerReflection { * @param callback The callback function that should be applied for each child reflection. */ override traverse(callback: TraverseCallback) { - for (const parameter of this.typeParameters ?? []) { + for (const parameter of this.typeParameters?.slice() || []) { if (callback(parameter, TraverseProperty.TypeParameter) === false) { return; } @@ -187,7 +187,7 @@ export class DeclarationReflection extends ContainerReflection { } } - for (const signature of this.signatures ?? []) { + for (const signature of this.signatures?.slice() || []) { if (callback(signature, TraverseProperty.Signatures) === false) { return; } diff --git a/src/lib/models/reflections/signature.ts b/src/lib/models/reflections/signature.ts index 1cae16971..8ef0ba4b7 100644 --- a/src/lib/models/reflections/signature.ts +++ b/src/lib/models/reflections/signature.ts @@ -73,13 +73,13 @@ export class SignatureReflection extends Reflection { } } - for (const parameter of this.typeParameters ?? []) { + for (const parameter of this.typeParameters?.slice() || []) { if (callback(parameter, TraverseProperty.TypeParameter) === false) { return; } } - for (const parameter of this.parameters ?? []) { + for (const parameter of this.parameters?.slice() || []) { if (callback(parameter, TraverseProperty.Parameters) === false) { return; } diff --git a/src/test/behaviorTests.ts b/src/test/behaviorTests.ts index 8ef0a11bb..bb286671d 100644 --- a/src/test/behaviorTests.ts +++ b/src/test/behaviorTests.ts @@ -70,4 +70,13 @@ export const behaviorTests: Record< equal(foo.comment, undefined); }, + + removeReflection(project) { + const foo = query(project, "foo"); + project.removeReflection(foo); + equal( + Object.values(project.reflections).map((r) => r.name), + ["typedoc"] + ); + }, }; diff --git a/src/test/converter2/behavior/removeReflection.ts b/src/test/converter2/behavior/removeReflection.ts new file mode 100644 index 000000000..e076de0fa --- /dev/null +++ b/src/test/converter2/behavior/removeReflection.ts @@ -0,0 +1,5 @@ +export function foo(first: string, second: string, third: string) { + first; + second; + third; +}