Skip to content

Commit

Permalink
fix(es/parser): Allow parsing import.meta as an expression (#6783)
Browse files Browse the repository at this point in the history
  • Loading branch information
hyf0 committed Jan 11, 2023
1 parent 70c3126 commit ff8face
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
6 changes: 5 additions & 1 deletion crates/swc_ecma_parser/src/lib.rs
Expand Up @@ -442,7 +442,11 @@ macro_rules! expose {
};
}

expose!(parse_file_as_expr, Box<Expr>, |p| { p.parse_expr() });
expose!(parse_file_as_expr, Box<Expr>, |p| {
// This allow to parse `import.meta`
p.input().ctx.can_be_module = true;
p.parse_expr()
});
expose!(parse_file_as_module, Module, |p| { p.parse_module() });
expose!(parse_file_as_script, Script, |p| { p.parse_script() });
expose!(parse_file_as_program, Program, |p| { p.parse_program() });
20 changes: 18 additions & 2 deletions crates/swc_ecma_parser/src/parser/expr/tests.rs
Expand Up @@ -2,12 +2,12 @@ extern crate test;

use std::hint::black_box;

use swc_common::DUMMY_SP as span;
use swc_common::{FileName, SourceMap, DUMMY_SP as span};
use swc_ecma_visit::assert_eq_ignore_span;
use test::Bencher;

use super::*;
use crate::EsConfig;
use crate::{parse_file_as_expr, EsConfig};

fn syntax() -> Syntax {
Syntax::Es(EsConfig {
Expand Down Expand Up @@ -519,6 +519,22 @@ fn issue_5947() {
);
}

#[test]
fn issue_6781() {
let cm = SourceMap::default();
let fm = cm.new_source_file(FileName::Anon, "import.meta.env".to_string());
let mut errors = vec![];
let expr = parse_file_as_expr(
&fm,
Default::default(),
Default::default(),
None,
&mut errors,
);
assert!(expr.is_ok());
assert!(errors.is_empty());
}

#[bench]
fn bench_new_expr_ts(b: &mut Bencher) {
bench_parser(
Expand Down

0 comments on commit ff8face

Please sign in to comment.