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": {
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: