@@ -521,7 +521,7 @@ const modeWarnSettings = WarnSettings();
521
521
522
522
/**
523
523
* @param {ParserMode|undefined } mode
524
- * @param {import('eslint').Rule.RuleContext } context
524
+ * @param {Reporter } context
525
525
* @returns {import('./tagNames.js').AliasedTags }
526
526
*/
527
527
const getTagNamesForMode = ( mode , context ) => {
@@ -602,20 +602,30 @@ const getTagDescription = (tg, returnArray) => {
602
602
} ;
603
603
604
604
/**
605
- * @param {import('eslint').Rule.RuleContext } context
606
- * @param {ParserMode|undefined } mode
605
+ * @typedef {{
606
+ * report: (descriptor: import('eslint').Rule.ReportDescriptor) => void
607
+ * }} Reporter
608
+ */
609
+
610
+ /**
607
611
* @param {string } name
612
+ * @param {ParserMode|undefined } mode
608
613
* @param {TagNamePreference } tagPreference
614
+ * @param {Reporter } context
609
615
* @returns {string|false|{
610
616
* message: string;
611
617
* replacement?: string|undefined;
612
618
* }}
613
619
*/
614
620
const getPreferredTagNameSimple = (
615
- context ,
616
- mode ,
617
621
name ,
622
+ mode ,
618
623
tagPreference = { } ,
624
+ context = {
625
+ report ( ) {
626
+ // No-op
627
+ }
628
+ } ,
619
629
) => {
620
630
const prefValues = Object . values ( tagPreference ) ;
621
631
if ( prefValues . includes ( name ) || prefValues . some ( ( prefVal ) => {
@@ -718,16 +728,16 @@ const getTags = (jsdoc, tagName) => {
718
728
} ;
719
729
720
730
/**
721
- * @param {import('eslint').Rule.RuleContext } context
722
- * @param {ParserMode } mode
723
- * @param {import('./iterateJsdoc.js').Report } report
724
- * @param {TagNamePreference } tagNamePreference
725
731
* @param {import('./iterateJsdoc.js').JsdocBlockWithInline } jsdoc
726
732
* @param {{
727
733
* tagName: string,
734
+ * context: import('eslint').Rule.RuleContext,
735
+ * mode: ParserMode,
736
+ * report: import('./iterateJsdoc.js').Report
737
+ * tagNamePreference: TagNamePreference
728
738
* skipReportingBlockedTag?: boolean,
729
739
* allowObjectReturn?: boolean,
730
- * defaultMessage?: string
740
+ * defaultMessage?: string,
731
741
* }} cfg
732
742
* @returns {string|undefined|false|{
733
743
* message: string;
@@ -737,13 +747,14 @@ const getTags = (jsdoc, tagName) => {
737
747
* tagName: string
738
748
* }}
739
749
*/
740
- const getPreferredTagName = ( context , mode , report , tagNamePreference , jsdoc , {
750
+ const getPreferredTagName = ( jsdoc , {
741
751
tagName,
752
+ context, mode, report, tagNamePreference,
742
753
skipReportingBlockedTag = false ,
743
754
allowObjectReturn = false ,
744
755
defaultMessage = `Unexpected tag \`@${ tagName } \`` ,
745
756
} ) => {
746
- const ret = getPreferredTagNameSimple ( context , mode , tagName , tagNamePreference ) ;
757
+ const ret = getPreferredTagNameSimple ( tagName , mode , tagNamePreference , context ) ;
747
758
const isObject = ret && typeof ret === 'object' ;
748
759
if ( hasTag ( jsdoc , tagName ) && ( ret === false || isObject && ! ret . replacement ) ) {
749
760
if ( skipReportingBlockedTag ) {
@@ -763,24 +774,33 @@ const getPreferredTagName = (context, mode, report, tagNamePreference, jsdoc, {
763
774
} ;
764
775
765
776
/**
766
- * @param {import('eslint').Rule.RuleContext } context
767
- * @param {ParserMode } mode
768
- * @param {import('./iterateJsdoc.js').Report } report
769
- * @param {TagNamePreference } tagNamePreference
770
777
* @param {import('./iterateJsdoc.js').JsdocBlockWithInline } jsdoc
771
778
* @param {string } tagName
772
779
* @param {(
773
- * matchingJsdocTag: import('@es-joy/jsdoccomment').JsdocTagWithInline,
774
- * targetTagName: string
775
- * ) => void} arrayHandler
776
- * @param {boolean } [skipReportingBlockedTag]
777
- * @returns {void }
778
- */
779
- const forEachPreferredTag = ( context , mode , report , tagNamePreference , jsdoc , tagName , arrayHandler , skipReportingBlockedTag = false ) => {
780
+ * matchingJsdocTag: import('@es-joy/jsdoccomment').JsdocTagWithInline,
781
+ * targetTagName: string
782
+ * ) => void} arrayHandler
783
+ * @param {object } cfg
784
+ * @param {import('eslint').Rule.RuleContext } cfg.context
785
+ * @param {ParserMode } cfg.mode
786
+ * @param {import('./iterateJsdoc.js').Report } cfg.report
787
+ * @param {TagNamePreference } cfg.tagNamePreference
788
+ * @param {boolean } [cfg.skipReportingBlockedTag]
789
+ * @returns {void }
790
+ */
791
+ const forEachPreferredTag = (
792
+ jsdoc , tagName , arrayHandler ,
793
+ {
794
+ context, mode, report,
795
+ tagNamePreference,
796
+ skipReportingBlockedTag = false ,
797
+ }
798
+ ) => {
780
799
const targetTagName = /** @type {string|false } */ (
781
- getPreferredTagName ( context , mode , report , tagNamePreference , jsdoc , {
800
+ getPreferredTagName ( jsdoc , {
782
801
skipReportingBlockedTag,
783
802
tagName,
803
+ context, mode, report, tagNamePreference
784
804
} )
785
805
) ;
786
806
if ( ! targetTagName ||
0 commit comments