From eb2ae9cfbfb35e8c7c1a17687525cbd99c0b067e Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Fri, 18 Nov 2016 11:55:19 -0500 Subject: [PATCH] Merge inferred return type like we do for params. Refs #359 --- lib/infer/return.js | 15 +++++++++++---- test/fixture/merge-infered-type.input.js | 2 +- test/fixture/merge-infered-type.output.json | 5 +---- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/infer/return.js b/lib/infer/return.js index 5ee4b9350..27f7d9b26 100644 --- a/lib/infer/return.js +++ b/lib/infer/return.js @@ -14,7 +14,9 @@ var findTarget = require('./finders').findTarget, */ module.exports = function () { return shouldSkipInference(function inferReturn(comment) { - if (comment.returns) { + if (Array.isArray(comment.returns) && + comment.returns.length && + comment.returns[0].type) { return comment; } var path = findTarget(comment.context.ast); @@ -29,9 +31,14 @@ module.exports = function () { if (t.isFunction(fn) && fn.returnType && fn.returnType.typeAnnotation) { - comment.returns = [{ - type: flowDoctrine(fn.returnType.typeAnnotation) - }]; + var returnType = flowDoctrine(fn.returnType.typeAnnotation); + if (comment.returns) { + comment.returns[0].type = returnType; + } else { + comment.returns = [{ + type: returnType + }]; + } } return comment; }); diff --git a/test/fixture/merge-infered-type.input.js b/test/fixture/merge-infered-type.input.js index 1bdd4ba40..f93203900 100644 --- a/test/fixture/merge-infered-type.input.js +++ b/test/fixture/merge-infered-type.input.js @@ -2,7 +2,7 @@ * Add five to `x`. * * @param x The number to add five to. - * @returns {number} x plus five. + * @returns x plus five. */ function addFive(x: number): number { return x + 5; diff --git a/test/fixture/merge-infered-type.output.json b/test/fixture/merge-infered-type.output.json index 2b83b1c5d..74112ac39 100644 --- a/test/fixture/merge-infered-type.output.json +++ b/test/fixture/merge-infered-type.output.json @@ -98,10 +98,7 @@ "title": "returns", "description": "x plus five.", "lineNumber": 4, - "type": { - "type": "NameExpression", - "name": "number" - } + "type": null } ], "loc": {