Skip to content

Commit e173f78

Browse files
committed
Fix: Avoid crash with non-static value of hasSuggestions in require-meta-has-suggestion rule
1 parent c10afb8 commit e173f78

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

lib/rules/require-meta-has-suggestions.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,11 @@ module.exports = {
6565
if (!hasSuggestionsProperty) {
6666
// Rule reports suggestions but is missing the `meta.hasSuggestions` property altogether.
6767
context.report({ node: metaNode ? metaNode : ruleInfo.create, messageId: 'shouldBeSuggestable' });
68-
} else if (hasSuggestionsStaticValue.value !== true) {
68+
} else if (hasSuggestionsStaticValue && hasSuggestionsStaticValue.value !== true) {
6969
// Rule reports suggestions but does not have `meta.hasSuggestions` property enabled.
7070
context.report({ node: hasSuggestionsProperty.value, messageId: 'shouldBeSuggestable' });
7171
}
72-
} else if (!ruleReportsSuggestions && hasSuggestionsProperty && hasSuggestionsStaticValue.value === true) {
72+
} else if (!ruleReportsSuggestions && hasSuggestionsProperty && hasSuggestionsStaticValue && hasSuggestionsStaticValue.value === true) {
7373
// Rule does not report suggestions but has the `meta.hasSuggestions` property enabled.
7474
context.report({ node: hasSuggestionsProperty.value, messageId: 'shouldNotBeSuggestable' });
7575
}

tests/lib/rules/require-meta-has-suggestions.js

+28
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,34 @@ ruleTester.run('require-meta-has-suggestions', rule, {
112112
}
113113
};
114114
`,
115+
// Provides suggestions, has hasSuggestions property with no static value available.
116+
`
117+
module.exports = {
118+
meta: { hasSuggestions: getHasSuggestions() },
119+
create(context) {
120+
context.report({node, message, suggest: [{}]});
121+
}
122+
};
123+
`,
124+
// Provides suggestions, has hasSuggestions property in variable with no static value available
125+
`
126+
const hasSuggestions = getHasSuggestions();
127+
module.exports = {
128+
meta: { hasSuggestions },
129+
create(context) {
130+
context.report({node, message, suggest: [{}]});
131+
}
132+
};
133+
`,
134+
// Does not provide suggestions, has hasSuggestions property with no static value available
135+
`
136+
module.exports = {
137+
meta: { hasSuggestions: getHasSuggestions() },
138+
create(context) {
139+
context.report({node, message});
140+
}
141+
};
142+
`,
115143
// Spread syntax.
116144
{
117145
code: `

0 commit comments

Comments
 (0)