Skip to content

Commit c9e1889

Browse files
committed
Permit @ in JS modules
Closes #3179
1 parent 6de5cfa commit c9e1889

File tree

4 files changed

+19
-1
lines changed

4 files changed

+19
-1
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,9 @@
301301
302302
([Giacomo Cavalieri](https://github.com/giacomocavalieri))
303303
304+
- JavaScript external module names may now include the character `@`.
305+
([Louis Pilfold](https://github.com/lpil))
306+
304307
### Formatter
305308
306309
- Redundant alias names for imported modules are now removed.

compiler-core/src/analyse.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@ impl<'a, A> ModuleAnalyzer<'a, A> {
578578
Some(external) => external,
579579
};
580580
if !MODULE
581-
.get_or_init(|| Regex::new("^[a-zA-Z0-9\\./:_-]+$").expect("regex"))
581+
.get_or_init(|| Regex::new("^[@a-zA-Z0-9\\./:_-]+$").expect("regex"))
582582
.is_match(module)
583583
{
584584
self.errors.push(Error::InvalidExternalJavascriptModule {

compiler-core/src/javascript/tests/externals.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@ fn show(x: anything) -> Nil"#,
1414
);
1515
}
1616

17+
#[test]
18+
fn at_namespace_module() {
19+
assert_js!(
20+
r#"
21+
@external(javascript, "@namespace/package", "inspect")
22+
fn show(x: anything) -> Nil"#,
23+
);
24+
}
25+
1726
#[test]
1827
fn pub_module_fn() {
1928
assert_js!(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
source: compiler-core/src/javascript/tests/externals.rs
3+
assertion_line: 19
4+
expression: "\n@external(javascript, \"@namespace/package\", \"inspect\")\nfn show(x: anything) -> Nil"
5+
---
6+
import { inspect as show } from "@namespace/package";

0 commit comments

Comments
 (0)