diff --git a/README.md b/README.md index 36c2e5f9e..19d99777c 100644 --- a/README.md +++ b/README.md @@ -11381,6 +11381,13 @@ function quux (foo) { * @callback * @param */ + +/** + * @param {Function} [processor=data => data] A function to run + */ +function processData(processor) { + return processor(data) +} ```` @@ -13318,6 +13325,15 @@ The following patterns are not considered problems: * @class * @property foo Foo. */ + +/** + * Typedef with multi-line property type. + * + * @typedef {object} MyType + * @property {function( + * number + * )} numberEater Method which takes a number. + */ ```` diff --git a/package.json b/package.json index 73521fce2..2f6295e99 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "url": "http://gajus.com" }, "dependencies": { - "comment-parser": "1.0.1", + "comment-parser": "1.1.0", "debug": "^4.3.1", "jsdoctypeparser": "^9.0.0", "lodash": "^4.17.20", diff --git a/src/iterateJsdoc.js b/src/iterateJsdoc.js index 37662f6ec..4e9d8dc5b 100644 --- a/src/iterateJsdoc.js +++ b/src/iterateJsdoc.js @@ -1,13 +1,14 @@ import { parse as commentParser, stringify as commentStringify, } from 'comment-parser'; -import getSpacer from 'comment-parser/lib/parser/spacer'; import { - tagTokenizer, - typeTokenizer, - nameTokenizer, - descriptionTokenizer, -} from 'comment-parser/lib/parser/spec-parser'; + // eslint-disable-next-line import/no-named-default + default as descriptionTokenizer, + getJoiner, +} from 'comment-parser/lib/parser/tokenizers/description'; +import nameTokenizer from 'comment-parser/lib/parser/tokenizers/name'; +import tagTokenizer from 'comment-parser/lib/parser/tokenizers/tag'; +import typeTokenizer from 'comment-parser/lib/parser/tokenizers/type'; import { rewireSpecs, seedBlock, @@ -83,7 +84,7 @@ const getTokenizers = () => { // Description (spec) => { - return descriptionTokenizer(getSpacer('preserve'))(spec); + return descriptionTokenizer(getJoiner('preserve'))(spec); }, ]; }; diff --git a/test/rules/assertions/requireParamName.js b/test/rules/assertions/requireParamName.js index a61e16c81..6bc383083 100644 --- a/test/rules/assertions/requireParamName.js +++ b/test/rules/assertions/requireParamName.js @@ -161,5 +161,15 @@ export default { */ `, }, + { + code: ` + /** + * @param {Function} [processor=data => data] A function to run + */ + function processData(processor) { + return processor(data) + } + `, + }, ], }; diff --git a/test/rules/assertions/requirePropertyDescription.js b/test/rules/assertions/requirePropertyDescription.js index 897d271e3..d77d3b861 100644 --- a/test/rules/assertions/requirePropertyDescription.js +++ b/test/rules/assertions/requirePropertyDescription.js @@ -89,5 +89,17 @@ export default { */ `, }, + { + code: ` + /** + * Typedef with multi-line property type. + * + * @typedef {object} MyType + * @property {function( + * number + * )} numberEater Method which takes a number. + */ + `, + }, ], };