From 2c1d6dcf080eff59debc30de9b5a66a89f8225bd Mon Sep 17 00:00:00 2001 From: Derek Xu Date: Wed, 9 Oct 2019 12:53:26 -0700 Subject: [PATCH] Fixed handling of true and false literal types (#3) --- lib/facade_converter.ts | 13 ++++++++++--- test/type_test.ts | 6 ++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/facade_converter.ts b/lib/facade_converter.ts index c33179f..0c9b942 100644 --- a/lib/facade_converter.ts +++ b/lib/facade_converter.ts @@ -474,10 +474,17 @@ export class FacadeConverter extends base.TranspilerBase { '<' + this.generateDartTypeName(node.elementType, addInsideTypeArgument(options)) + '>'; } else if (node.kind === ts.SyntaxKind.NumberKeyword) { name = 'num'; - } else if (node.kind === ts.SyntaxKind.LiteralType) { - if (ts.isLiteralTypeNode(node) && ts.isLiteralExpression(node.literal)) { - comment = `'${node.literal.text}'`; + } else if (ts.isLiteralTypeNode(node)) { + const literal = node.literal; + if (ts.isLiteralExpression(literal)) { + comment = `'${literal.text}'`; name = 'String'; + } else if (literal.kind === ts.SyntaxKind.TrueKeyword) { + name = 'bool'; + comment = 'true'; + } else if (literal.kind === ts.SyntaxKind.FalseKeyword) { + name = 'bool'; + comment = 'false'; } } else if (ts.isStringLiteral(node) || node.kind === ts.SyntaxKind.StringKeyword) { name = 'String'; diff --git a/test/type_test.ts b/test/type_test.ts index c5df3c5..3a4fb69 100644 --- a/test/type_test.ts +++ b/test/type_test.ts @@ -31,6 +31,12 @@ abstract class Foo { external Foo bar(); }`); }); + it('supports true and false return types', () => { + expectTranslate('export function f(): true;').to.equal(`@JS() +external bool /*true*/ f();`); + expectTranslate('export function g(): false;').to.equal(`@JS() +external bool /*false*/ g();`); + }); it('comment type literals', () => { expectTranslate('var x: {x: string, y: number};').to.equal(`@JS()