Skip to content

Commit fec262f

Browse files
authored
feat(linter): implement useErrorMessage (#2978)
1 parent b3da3ae commit fec262f

File tree

15 files changed

+889
-39
lines changed

15 files changed

+889
-39
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ our [guidelines for writing a good changelog entry](https://github.com/biomejs/b
228228

229229
#### New features
230230

231+
- Add [nursery/useErrorMessage](https://biomejs.dev/linter/rules/use_error_message/). Contributed by @minht11
231232
- Add [nursery/useThrowOnlyError](https://biomejs.dev/linter/rules/use_throw_only_error/). Contributed by @minht11
232233
- Add [nursery/useImportExtensions](https://biomejs.dev/linter/rules/use-import-extensions/). Contributed by @minht11
233234

crates/biome_cli/src/execute/migrate/eslint_any_rule_to_biome.rs

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/biome_configuration/src/linter/rules.rs

Lines changed: 43 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/biome_diagnostics_categories/src/categories.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,16 @@ define_categories! {
110110
"lint/correctness/useValidForDirection": "https://biomejs.dev/linter/rules/use-valid-for-direction",
111111
"lint/correctness/useYield": "https://biomejs.dev/linter/rules/use-yield",
112112
"lint/nursery/colorNoInvalidHex": "https://biomejs.dev/linter/rules/color-no-invalid-hex",
113-
"lint/nursery/useAdjacentOverloadSignatures": "https://biomejs.dev/linter/rules/use-adjacent-overload-signatures",
114113
"lint/nursery/noColorInvalidHex": "https://biomejs.dev/linter/rules/no-color-invalid-hex",
115114
"lint/nursery/noConsole": "https://biomejs.dev/linter/rules/no-console",
116115
"lint/nursery/noConstantMathMinMaxClamp": "https://biomejs.dev/linter/rules/no-constant-math-min-max-clamp",
117-
"lint/nursery/noEmptyBlock": "https://biomejs.dev/linter/rules/no-empty-block",
118116
"lint/nursery/noDoneCallback": "https://biomejs.dev/linter/rules/no-done-callback",
119117
"lint/nursery/noDuplicateAtImportRules": "https://biomejs.dev/linter/rules/no-duplicate-at-import-rules",
120118
"lint/nursery/noDuplicateElseIf": "https://biomejs.dev/linter/rules/no-duplicate-else-if",
121119
"lint/nursery/noDuplicateFontNames": "https://biomejs.dev/linter/rules/no-font-family-duplicate-names",
122120
"lint/nursery/noDuplicateJsonKeys": "https://biomejs.dev/linter/rules/no-duplicate-json-keys",
123121
"lint/nursery/noDuplicateSelectorsKeyframeBlock": "https://biomejs.dev/linter/rules/no-duplicate-selectors-keyframe-block",
122+
"lint/nursery/noEmptyBlock": "https://biomejs.dev/linter/rules/no-empty-block",
124123
"lint/nursery/noEvolvingAny": "https://biomejs.dev/linter/rules/no-evolving-any",
125124
"lint/nursery/noFlatMapIdentity": "https://biomejs.dev/linter/rules/no-flat-map-identity",
126125
"lint/nursery/noImportantInKeyframe": "https://biomejs.dev/linter/rules/no-important-in-keyframe",
@@ -141,10 +140,12 @@ define_categories! {
141140
"lint/nursery/noUselessStringConcat": "https://biomejs.dev/linter/rules/no-useless-string-concat",
142141
"lint/nursery/noUselessUndefinedInitialization": "https://biomejs.dev/linter/rules/no-useless-undefined-initialization",
143142
"lint/nursery/noYodaExpression": "https://biomejs.dev/linter/rules/no-yoda-expression",
143+
"lint/nursery/useAdjacentOverloadSignatures": "https://biomejs.dev/linter/rules/use-adjacent-overload-signatures",
144144
"lint/nursery/useArrayLiterals": "https://biomejs.dev/linter/rules/use-array-literals",
145145
"lint/nursery/useBiomeSuppressionComment": "https://biomejs.dev/linter/rules/use-biome-suppression-comment",
146146
"lint/nursery/useConsistentBuiltinInstantiation": "https://biomejs.dev/linter/rules/use-consistent-new-builtin",
147147
"lint/nursery/useDefaultSwitchClause": "https://biomejs.dev/linter/rules/use-default-switch-clause",
148+
"lint/nursery/useErrorMessage": "https://biomejs.dev/linter/rules/use-error-message",
148149
"lint/nursery/useExplicitLengthCheck": "https://biomejs.dev/linter/rules/use-explicit-length-check",
149150
"lint/nursery/useFocusableInteractive": "https://biomejs.dev/linter/rules/use-focusable-interactive",
150151
"lint/nursery/useGenericFontNames": "https://biomejs.dev/linter/rules/use-generic-font-names",

crates/biome_js_analyze/src/lint/nursery.rs

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/biome_js_analyze/src/lint/nursery/use_consistent_builtin_instantiation.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -259,18 +259,13 @@ pub struct UseConsistentBuiltinInstantiationState {
259259
fn extract_callee_and_rule(
260260
node: &JsNewOrCallExpression,
261261
) -> Option<(AnyJsExpression, BuiltinCreationRule)> {
262-
match node {
263-
JsNewOrCallExpression::JsNewExpression(node) => {
264-
let callee = node.callee().ok()?;
262+
let rule = match node {
263+
JsNewOrCallExpression::JsNewExpression(_) => BuiltinCreationRule::MustNotUseNew,
264+
JsNewOrCallExpression::JsCallExpression(_) => BuiltinCreationRule::MustUseNew,
265+
};
266+
let callee = node.callee().ok()?;
265267

266-
Some((callee, BuiltinCreationRule::MustNotUseNew))
267-
}
268-
JsNewOrCallExpression::JsCallExpression(node) => {
269-
let callee: AnyJsExpression = node.callee().ok()?;
270-
271-
Some((callee, BuiltinCreationRule::MustUseNew))
272-
}
273-
}
268+
Some((callee, rule))
274269
}
275270

276271
fn convert_new_expression_to_call_expression(expr: &JsNewExpression) -> Option<JsCallExpression> {

0 commit comments

Comments
 (0)