From 1dc56591b9b230c95c57b07c4679616299f2323e Mon Sep 17 00:00:00 2001 From: Gerrit Birkeland Date: Mon, 14 Jun 2021 21:44:56 -0600 Subject: [PATCH] fix: Setters should always have a `void` return type Closes #1215 --- src/lib/converter/factories/signature.ts | 3 +++ src/test/converter2.test.ts | 7 +++++++ src/test/converter2/issues/gh1215.d.ts | 3 +++ 3 files changed, 13 insertions(+) create mode 100644 src/test/converter2/issues/gh1215.d.ts 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); +}