Skip to content

Commit 07f2a25

Browse files
committedMar 25, 2025·
fix(editor): enable regex parsing in language server (#10035)
- fixes #10029 - fixes #9957
1 parent 8408606 commit 07f2a25

File tree

5 files changed

+51
-0
lines changed

5 files changed

+51
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"rules": {
3+
"no-useless-escape": "error",
4+
"no-control-regex": "error"
5+
}
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
let regex = /([^\/]+)/g;
2+
let regex2 = /[^\u0000-\u00FF]/g;

‎crates/oxc_language_server/src/linter/isolated_lint_handler.rs

+1
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ impl IsolatedLintHandler {
119119
let ret = Parser::new(&allocator, javascript_source_text, source_type)
120120
.with_options(ParseOptions {
121121
allow_return_outside_function: true,
122+
parse_regular_expression: true,
122123
..ParseOptions::default()
123124
})
124125
.parse();

‎crates/oxc_language_server/src/linter/server_linter.rs

+17
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,21 @@ mod test {
7373
Tester::new_with_linter(linter)
7474
.test_and_snapshot_single_file("fixtures/linter/issue_9958/issue.ts");
7575
}
76+
77+
// Test case for https://github.com/oxc-project/oxc/issues/9957
78+
#[test]
79+
fn test_regexp() {
80+
let config_store = ConfigStoreBuilder::from_oxlintrc(
81+
true,
82+
Oxlintrc::from_file(&PathBuf::from("fixtures/linter/regexp_feature/.oxlintrc.json"))
83+
.unwrap(),
84+
)
85+
.unwrap()
86+
.build()
87+
.unwrap();
88+
let linter = Linter::new(LintOptions::default(), config_store).with_fix(FixKind::SafeFix);
89+
90+
Tester::new_with_linter(linter)
91+
.test_and_snapshot_single_file("fixtures/linter/regexp_feature/index.ts");
92+
}
7693
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
source: crates/oxc_language_server/src/linter/tester.rs
3+
---
4+
code: "eslint(no-control-regex)"
5+
code_description.href: "https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-control-regex"
6+
message: "Unexpected control character\nhelp: '\\u0000' is not a valid control character."
7+
range: Range { start: Position { line: 1, character: 13 }, end: Position { line: 1, character: 32 } }
8+
related_information[0].message: ""
9+
related_information[0].location.uri: "file://<variable>/fixtures/linter/regexp_feature/index.ts"
10+
related_information[0].location.range: Range { start: Position { line: 1, character: 13 }, end: Position { line: 1, character: 32 } }
11+
severity: Some(Error)
12+
source: Some("oxc")
13+
tags: None
14+
15+
16+
code: "eslint(no-useless-escape)"
17+
code_description.href: "https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-useless-escape"
18+
message: "Unnecessary escape character '/'\nhelp: Replace `\\/` with `/`."
19+
range: Range { start: Position { line: 0, character: 16 }, end: Position { line: 0, character: 18 } }
20+
related_information[0].message: ""
21+
related_information[0].location.uri: "file://<variable>/fixtures/linter/regexp_feature/index.ts"
22+
related_information[0].location.range: Range { start: Position { line: 0, character: 16 }, end: Position { line: 0, character: 18 } }
23+
severity: Some(Error)
24+
source: Some("oxc")
25+
tags: None

0 commit comments

Comments
 (0)