diff --git a/config/jsdoc/info/publish.js b/config/jsdoc/info/publish.js index 5d0eca556b..12e409027c 100644 --- a/config/jsdoc/info/publish.js +++ b/config/jsdoc/info/publish.js @@ -103,11 +103,19 @@ exports.publish = function(data, opts) { if (typeof param.optional == 'boolean') { paramInfo.optional = param.optional; } + if (typeof param.nullable == 'boolean') { + paramInfo.nullable = param.nullable; + } }); symbol.params = params; } if (doc.returns) { - symbol.returns = getTypes(doc.returns[0].type.names); + symbol.returns = { + types: getTypes(doc.returns[0].type.names) + }; + if (typeof doc.returns[0].nullable == 'boolean') { + symbol.returns.nullable = doc.returns[0].nullable; + } } if (doc.tags) { doc.tags.every(function(tag) { diff --git a/tasks/generate-externs.js b/tasks/generate-externs.js index c93472d5dd..dd9c61e286 100644 --- a/tasks/generate-externs.js +++ b/tasks/generate-externs.js @@ -105,12 +105,14 @@ function generateExterns(typedefs, symbols, externs) { lines.push(' * @param {' + (param.variable ? '...' : '') + noGoogTypes(param.types).join('|') + - (param.optional ? '=' : '') + + (param.optional ? '=' : '') + (param.nullable ? '!' : '') + '} ' + param.name); }); } if (symbol.returns) { - lines.push(' * @return {' + noGoogTypes(symbol.returns).join('|') + '}'); + lines.push(' * @return {' + + (symbol.returns.nullable ? '!' : '') + + noGoogTypes(symbol.returns.types).join('|') + '}'); } if (symbol.template) { lines.push(' * @template ' + symbol.template);