diff --git a/src/lib/converter/factories/signature.ts b/src/lib/converter/factories/signature.ts index 55b3c7ea3..deb0c82b6 100644 --- a/src/lib/converter/factories/signature.ts +++ b/src/lib/converter/factories/signature.ts @@ -2,6 +2,7 @@ import * as ts from "typescript"; import * as assert from "assert"; import { DeclarationReflection, + IntrinsicType, ParameterReflection, PredicateType, Reflection, @@ -67,6 +68,8 @@ export function createSignature( const predicate = context.checker.getTypePredicateOfSignature(signature); if (predicate) { sigRef.type = convertPredicate(predicate, context.withScope(sigRef)); + } else if (kind == ReflectionKind.SetSignature) { + sigRef.type = new IntrinsicType("void"); } else { sigRef.type = context.converter.convertType( context.withScope(sigRef), diff --git a/src/test/converter2.test.ts b/src/test/converter2.test.ts index 9c21da949..2dee527de 100644 --- a/src/test/converter2.test.ts +++ b/src/test/converter2.test.ts @@ -7,6 +7,7 @@ import { DeclarationReflection, ProjectReflection, ReflectionKind, + SignatureReflection, } from "../lib/models"; function query(project: ProjectReflection, name: string) { @@ -56,6 +57,12 @@ const issueTests: Record void> = { equal(refl.signatures?.[0]?.comment?.returns, "Test description.\n"); }, + gh1215(project) { + const foo = query(project, "Foo.bar"); + ok(foo.setSignature instanceof SignatureReflection); + equal(foo.setSignature.type?.toString(), "void"); + }, + gh1255(project) { const foo = query(project, "C.foo"); equal(foo.comment?.shortText, "Docs!"); diff --git a/src/test/converter2/issues/gh1215.d.ts b/src/test/converter2/issues/gh1215.d.ts new file mode 100644 index 000000000..1c6be7d24 --- /dev/null +++ b/src/test/converter2/issues/gh1215.d.ts @@ -0,0 +1,3 @@ +declare class Foo { + set bar(bar: string); +}