Fix jsdocs for multi-line ES6-style methods
Summary: The function definition and body can be in different places for multi-line declarations, so the docblock might not get pulled in. None of the existing docs seem to be affected, but putting up the fix for posterity. Test Plan: I modified `AlertIOS.alert` (in Libraries/Utilties/AlertIOS.js) to actually have a docblock, and ran `website/publish.sh` (with the push bit commented out). The added doc doesn't get picked up with the current code, but it does with the fix.
This commit is contained in:
parent
1f8b97aeff
commit
97aad167a6
|
@ -209,13 +209,21 @@ function sanitizeTypehint(string) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {object} node
|
* @param {object} node
|
||||||
|
* @param {object} docNode Node used for location/docblock purposes
|
||||||
* @param {object} state
|
* @param {object} state
|
||||||
* @param {string} source
|
* @param {string} source
|
||||||
* @param {array<object>} commentsForFile
|
* @param {array<object>} commentsForFile
|
||||||
* @param {array<string>} linesForFile
|
* @param {array<string>} linesForFile
|
||||||
* @return {object}
|
* @return {object}
|
||||||
*/
|
*/
|
||||||
function getFunctionData(node, state, source, commentsForFile, linesForFile) {
|
function getFunctionData(
|
||||||
|
node,
|
||||||
|
docNode,
|
||||||
|
state,
|
||||||
|
source,
|
||||||
|
commentsForFile,
|
||||||
|
linesForFile
|
||||||
|
) {
|
||||||
var params = [];
|
var params = [];
|
||||||
var typechecks = commentsForFile.typechecks;
|
var typechecks = commentsForFile.typechecks;
|
||||||
var typehintsFromBlock = null;
|
var typehintsFromBlock = null;
|
||||||
|
@ -287,9 +295,9 @@ function getFunctionData(node, state, source, commentsForFile, linesForFile) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
line: node.loc.start.line,
|
line: docNode.loc.start.line,
|
||||||
source: source.substring.apply(source, node.range),
|
source: source.substring.apply(source, node.range),
|
||||||
docblock: getDocBlock(node, commentsForFile, linesForFile),
|
docblock: getDocBlock(docNode, commentsForFile, linesForFile),
|
||||||
modifiers: [],
|
modifiers: [],
|
||||||
params: params,
|
params: params,
|
||||||
tparams: tparams,
|
tparams: tparams,
|
||||||
|
@ -320,7 +328,7 @@ function getObjectData(node, state, source, scopeChain,
|
||||||
|
|
||||||
switch (property.value.type) {
|
switch (property.value.type) {
|
||||||
case Syntax.FunctionExpression:
|
case Syntax.FunctionExpression:
|
||||||
var methodData = getFunctionData(property.value, state, source,
|
var methodData = getFunctionData(property.value, property, state, source,
|
||||||
commentsForFile, linesForFile);
|
commentsForFile, linesForFile);
|
||||||
methodData.name = property.key.name || property.key.value;
|
methodData.name = property.key.name || property.key.value;
|
||||||
methodData.source = source.substring.apply(source, property.range);
|
methodData.source = source.substring.apply(source, property.range);
|
||||||
|
@ -335,7 +343,8 @@ function getObjectData(node, state, source, scopeChain,
|
||||||
if (expr) {
|
if (expr) {
|
||||||
if (expr.type === Syntax.FunctionDeclaration) {
|
if (expr.type === Syntax.FunctionDeclaration) {
|
||||||
var functionData =
|
var functionData =
|
||||||
getFunctionData(expr, state, source, commentsForFile, linesForFile);
|
getFunctionData(expr, property, state, source, commentsForFile,
|
||||||
|
linesForFile);
|
||||||
functionData.name = property.key.name || property.key.value;
|
functionData.name = property.key.name || property.key.value;
|
||||||
functionData.modifiers.push('static');
|
functionData.modifiers.push('static');
|
||||||
methods.push(functionData);
|
methods.push(functionData);
|
||||||
|
@ -389,7 +398,7 @@ function getClassData(node, state, source, commentsForFile, linesForFile) {
|
||||||
if (bodyItem.type === Syntax.MethodDefinition) {
|
if (bodyItem.type === Syntax.MethodDefinition) {
|
||||||
if (bodyItem.value.type === Syntax.FunctionExpression) {
|
if (bodyItem.value.type === Syntax.FunctionExpression) {
|
||||||
var methodData =
|
var methodData =
|
||||||
getFunctionData(bodyItem.value, state, source,
|
getFunctionData(bodyItem.value, bodyItem, state, source,
|
||||||
commentsForFile, linesForFile);
|
commentsForFile, linesForFile);
|
||||||
methodData.name = bodyItem.key.name;
|
methodData.name = bodyItem.key.name;
|
||||||
methodData.source = source.substring.apply(source, bodyItem.range);
|
methodData.source = source.substring.apply(source, bodyItem.range);
|
||||||
|
@ -529,7 +538,8 @@ function parseSource(source) {
|
||||||
break;
|
break;
|
||||||
case Syntax.FunctionDeclaration:
|
case Syntax.FunctionDeclaration:
|
||||||
case Syntax.FunctionExpression:
|
case Syntax.FunctionExpression:
|
||||||
data = getFunctionData(definition, _state, source, ast.comments, lines);
|
data = getFunctionData(definition, definition, _state, source,
|
||||||
|
ast.comments, lines);
|
||||||
data.type = 'function';
|
data.type = 'function';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue