Skip to content

Commit b36053e

Browse files
committed
fix(valid-types): ensure reporting "must have a type" when type is known to be required
1 parent b6e2699 commit b36053e

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9065,6 +9065,13 @@ function quux () {}
90659065
function quux () {}
90669066
// Settings: {"jsdoc":{"mode":"closure"}}
90679067
// Message: Tag @define must have a type
9068+
9069+
/**
9070+
* @this
9071+
*/
9072+
let foo;
9073+
// Settings: {"jsdoc":{"mode":"closure"}}
9074+
// Message: Tag @this must have a type
90689075
````
90699076
90709077
The following patterns are not considered problems:

src/rules/validTypes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export default iterateJsdoc(({
9797
validNamepathParsing(thatNamepath);
9898
}
9999
} else {
100-
if (mustHaveEither && !hasEither) {
100+
if (mustHaveEither && !hasEither && !mustHaveTypePosition) {
101101
report(`Tag @${tag.tag} must have either a type or namepath`, null, tag);
102102

103103
return;

test/rules/assertions/validTypes.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,25 @@ export default {
323323
},
324324
},
325325
},
326+
{
327+
code: `
328+
/**
329+
* @this
330+
*/
331+
let foo;
332+
`,
333+
errors: [
334+
{
335+
line: 3,
336+
message: 'Tag @this must have a type',
337+
},
338+
],
339+
settings: {
340+
jsdoc: {
341+
mode: 'closure',
342+
},
343+
},
344+
},
326345
],
327346
valid: [
328347
{

0 commit comments

Comments
 (0)