diff --git a/Cargo.lock b/Cargo.lock index 6693ab21d..fbeea0198 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -120,15 +120,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.7.0" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "d9df67f7bf9ef8498769f994239c45613ef0c5899415fb58e9add412d2c1a538" [[package]] name = "cfg-if" @@ -244,9 +238,9 @@ dependencies = [ [[package]] name = "deno_ast" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427e7091c1fd8a13b002824f43773b6ef2d5c8ded445ee20013bea7f6ca8bc5b" +checksum = "d177a5fbe88bec8d8b86882c77b7ba39ba03be99c5d80d3c9fc529191f3c0933" dependencies = [ "dprint-swc-ecma-ast-view", "serde", @@ -315,13 +309,13 @@ dependencies = [ [[package]] name = "dprint-swc-ecma-ast-view" -version = "0.35.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c561abeae30e338748557e2c85e7c73621877eba137951207a3fd32306d9ce2" +checksum = "3530a71ad541e1182d19a1fa4da83c8d134e38f6fffd4cd1035440444dd08d15" dependencies = [ "bumpalo", - "fnv", "num-bigint", + "rustc-hash", "swc_atoms", "swc_common", "swc_ecmascript", @@ -491,15 +485,6 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "getopts" version = "0.2.21" @@ -1065,6 +1050,12 @@ version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rusty_v8" version = "0.26.0" @@ -1239,34 +1230,34 @@ dependencies = [ [[package]] name = "swc_common" -version = "0.12.0" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca21695d45b5374d7eafedda065de3cab2337a4707642302f71caaa4c0d338a" +checksum = "259212df9a949aa6ec440b64244475bcda531609a85489a22eb27908dd8d1b0d" dependencies = [ "ahash", "ast_node", "cfg-if 0.1.10", "either", "from_variant", - "fxhash", - "log", "num-bigint", "once_cell", "owning_ref", + "rustc-hash", "scoped-tls", "serde", "string_cache", "swc_eq_ignore_macros", "swc_visit", + "tracing", "unicode-width", "url", ] [[package]] name = "swc_ecma_ast" -version = "0.52.0" +version = "0.54.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa0efb0e13ba6545e2b86336937e1641594f78c48484b85c2dc9582eaccb41e1" +checksum = "eae24a6603262822de50069ff72394b0d208267e5bd5298678ba6a79f670c40f" dependencies = [ "is-macro", "num-bigint", @@ -1278,15 +1269,13 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.70.2" +version = "0.73.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "042a901352b84cefbb64916a010ee33f621a7e341ced2b2fa60035858f3146a5" +checksum = "e15e3e4f316aee7662a11cad0e4bb723d35e164b6ea9360bd3cbc81c7956f5af" dependencies = [ "either", "enum_kind", - "fxhash", "lexical", - "log", "num-bigint", "serde", "smallvec", @@ -1294,14 +1283,15 @@ dependencies = [ "swc_common", "swc_ecma_ast", "swc_ecma_visit", + "tracing", "unicode-xid", ] [[package]] name = "swc_ecma_transforms" -version = "0.71.1" +version = "0.81.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2124504a4203cab8f903b8e8be49dbd6c4bad2b0405ba0c8188f952c224c44b" +checksum = "9170807286d86c713320a5122c299a5cd62c81ac62e572e2259aa1a93d80c171" dependencies = [ "swc_atoms", "swc_common", @@ -1315,11 +1305,10 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "0.31.1" +version = "0.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b26e191df68943565f22059d31b02967e60a62c4f76533b5b5106546785a8e2e" +checksum = "e5ab2108361a8bb8664951ae0f533fab36c609aa849143b3358e29ed33060bbe" dependencies = [ - "fxhash", "once_cell", "phf", "scoped-tls", @@ -1334,9 +1323,9 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "0.44.2" +version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c811bca37142f7fe21ce800784db1d537645762ffe8d8a52e2a7179d8cc1723" +checksum = "7438f518f4392bf059886ec4ea524e8cc501bbaf077410161c4151226780fb3c" dependencies = [ "once_cell", "scoped-tls", @@ -1349,9 +1338,9 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "0.38.1" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c6721dfbcb8bea64383edb0d59ccb02bc1e140024f2e0f8766792a14f5f466" +checksum = "2c24a7600061813d7df3248d93ff27cacc1a81f9eeec47701866f3adc9ae2930" dependencies = [ "num-bigint", "swc_atoms", @@ -1362,9 +1351,9 @@ dependencies = [ [[package]] name = "swc_ecmascript" -version = "0.63.1" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba53c5582d6e5881b093ece9aaa4b561465afab0560abb19948f2c4bbff1bdb9" +checksum = "8147c047015f4289b3202a5362a6ed8c384a585eee05c98f040299a0b303f22e" dependencies = [ "swc_ecma_ast", "swc_ecma_parser", @@ -1483,6 +1472,38 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +[[package]] +name = "tracing" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" +dependencies = [ + "lazy_static", +] + [[package]] name = "unicase" version = "2.6.0" diff --git a/Cargo.toml b/Cargo.toml index 68df7c7d0..8de2b65f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,7 @@ default = [] docs = [] [dependencies] -deno_ast = { version = "0.2.0", features = ["transforms", "utils", "visit", "view"] } +deno_ast = { version = "0.3.0", features = ["transforms", "utils", "visit", "view"] } log = "0.4.14" serde = { version = "1.0.125", features = ["derive"] } serde_json = "1.0.64" diff --git a/src/ast_parser.rs b/src/ast_parser.rs index 6f2539364..b42644927 100644 --- a/src/ast_parser.rs +++ b/src/ast_parser.rs @@ -1,9 +1,5 @@ // Copyright 2020-2021 the Deno authors. All rights reserved. MIT license. -use deno_ast::swc::common::Globals; -use deno_ast::swc::common::Mark; use deno_ast::swc::parser::Syntax; -use deno_ast::swc::transforms::resolver::ts_resolver; -use deno_ast::swc::visit::FoldWith; use deno_ast::MediaType; use deno_ast::ParsedSource; use std::error::Error; @@ -39,59 +35,18 @@ impl SwcDiagnostic { } } -/// Low-level utility structure with common AST parsing functions. -/// -/// Allows to build more complicated parser by providing a callback -/// to `parse_module`. -pub(crate) struct AstParser { - pub(crate) globals: Globals, - /// The marker passed to the resolver (from swc). - /// - /// This mark is applied to top level bindings and unresolved references. - pub(crate) top_level_mark: Mark, -} - -impl AstParser { - pub(crate) fn new() -> Self { - let globals = Globals::new(); - let top_level_mark = deno_ast::swc::common::GLOBALS - .set(&globals, || Mark::fresh(Mark::root())); - - AstParser { - globals, - top_level_mark, - } - } - - pub(crate) fn parse_program( - &self, - file_name: &str, - syntax: Syntax, - source_code: String, - ) -> Result { - deno_ast::parse_program_with_post_process( - deno_ast::ParseParams { - specifier: file_name.to_string(), - media_type: MediaType::Unknown, - source: deno_ast::SourceTextInfo::from_string(source_code), - capture_tokens: true, - maybe_syntax: Some(syntax), - }, - |program| { - // This is used to apply proper "syntax context" to all AST elements. When SWC performs - // transforms/folding it might change some of those context and "ts_resolver" ensures - // that all elements end up in proper lexical scope. - deno_ast::swc::common::GLOBALS.set(&self.globals, || { - program.fold_with(&mut ts_resolver(self.top_level_mark)) - }) - }, - ) - .map_err(|diagnostic| SwcDiagnostic::from_diagnostic(&diagnostic)) - } -} - -impl Default for AstParser { - fn default() -> Self { - Self::new() - } +pub(crate) fn parse_program( + file_name: &str, + syntax: Syntax, + source_code: String, +) -> Result { + deno_ast::parse_program(deno_ast::ParseParams { + specifier: file_name.to_string(), + media_type: MediaType::Unknown, + source: deno_ast::SourceTextInfo::from_string(source_code), + capture_tokens: true, + maybe_syntax: Some(syntax), + scope_analysis: true, + }) + .map_err(|diagnostic| SwcDiagnostic::from_diagnostic(&diagnostic)) } diff --git a/src/context.rs b/src/context.rs index 513ae1a73..c857b7e94 100644 --- a/src/context.rs +++ b/src/context.rs @@ -7,9 +7,10 @@ use crate::ignore_directives::{ use crate::rules::{get_all_rules, LintRule}; use crate::scopes::Scope; use deno_ast::swc::common::comments::Comment; +use deno_ast::swc::common::BytePos; use deno_ast::swc::common::{Span, SyntaxContext}; use deno_ast::view as ast_view; -use deno_ast::view::{BytePos, RootNode, SourceFile}; +use deno_ast::view::{RootNode, SourceFile}; use deno_ast::MediaType; use std::collections::{HashMap, HashSet}; use std::sync::Arc; @@ -146,11 +147,7 @@ impl<'view> Context<'view> { } pub fn all_comments(&self) -> impl Iterator { - self - .program - .comments() - .expect("Program should have information about comments, but doesn't") - .all_comments() + self.program.comment_container().unwrap().all_comments() } pub fn leading_comments_at( @@ -159,8 +156,8 @@ impl<'view> Context<'view> { ) -> impl Iterator { self .program - .comments() - .expect("Program should have information about comments, but doesn't") + .comment_container() + .unwrap() .leading_comments(lo) } @@ -170,8 +167,8 @@ impl<'view> Context<'view> { ) -> impl Iterator { self .program - .comments() - .expect("Program should have information about comments, but doesn't") + .comment_container() + .unwrap() .trailing_comments(hi) } diff --git a/src/ignore_directives.rs b/src/ignore_directives.rs index 2d5930a4a..ce5bde807 100644 --- a/src/ignore_directives.rs +++ b/src/ignore_directives.rs @@ -2,8 +2,9 @@ use deno_ast::swc::common::comments::Comment; use deno_ast::swc::common::comments::CommentKind; use deno_ast::swc::common::Span; +use deno_ast::swc::common::Spanned; use deno_ast::view as ast_view; -use deno_ast::view::{RootNode, Spanned}; +use deno_ast::view::RootNode; use once_cell::sync::Lazy; use regex::Regex; use std::collections::HashMap; @@ -69,7 +70,7 @@ pub fn parse_line_ignore_directives( program: ast_view::Program, ) -> HashMap { program - .comments() + .comment_container() .unwrap() .all_comments() .filter_map(|comment| { @@ -90,7 +91,7 @@ pub fn parse_file_ignore_directives( program: ast_view::Program, ) -> Option { program - .comments() + .comment_container() .unwrap() .leading_comments(program.span().lo()) .find_map(|comment| parse_ignore_comment(ignore_global_directive, comment)) diff --git a/src/linter.rs b/src/linter.rs index d8afc0378..6b83fdd45 100644 --- a/src/linter.rs +++ b/src/linter.rs @@ -1,5 +1,5 @@ // Copyright 2020-2021 the Deno authors. All rights reserved. MIT license. -use crate::ast_parser::AstParser; +use crate::ast_parser::parse_program; use crate::ast_parser::SwcDiagnostic; use crate::context::Context; use crate::control_flow::ControlFlow; @@ -9,7 +9,6 @@ use crate::ignore_directives::{ }; use crate::rules::LintRule; use crate::scopes::Scope; -use deno_ast::swc::common::SyntaxContext; use deno_ast::view::ProgramRef; use deno_ast::MediaType; use deno_ast::ParsedSource; @@ -89,7 +88,6 @@ impl LinterBuilder { } pub struct Linter { - ast_parser: AstParser, ignore_file_directive: String, ignore_diagnostic_directive: String, media_type: MediaType, @@ -106,7 +104,6 @@ impl Linter { plugins: Vec>, ) -> Self { Linter { - ast_parser: AstParser::new(), ignore_file_directive, ignore_diagnostic_directive, media_type, @@ -123,16 +120,14 @@ impl Linter { let start = Instant::now(); let syntax = deno_ast::get_syntax(self.media_type); + let parse_result = parse_program(&file_name, syntax, source_code); - let parse_result = - self - .ast_parser - .parse_program(&file_name, syntax, source_code); let end_parse_program = Instant::now(); debug!( "ast_parser.parse_program took {:#?}", end_parse_program - start ); + let parsed_source = parse_result?; let diagnostics = self.lint_program(&parsed_source); @@ -176,11 +171,6 @@ impl Linter { let start = Instant::now(); let control_flow = ControlFlow::analyze(parsed_source.program_ref().into()); - let top_level_ctxt = deno_ast::swc::common::GLOBALS - .set(&self.ast_parser.globals, || { - SyntaxContext::empty().apply_mark(self.ast_parser.top_level_mark) - }); - let diagnostics = parsed_source.with_view(|pg| { let file_ignore_directive = parse_file_ignore_directives(&self.ignore_file_directive, pg); @@ -206,7 +196,7 @@ impl Linter { line_ignore_directives, scope, control_flow, - top_level_ctxt, + parsed_source.top_level_context(), ); crate::rules::sort_rules_by_priority(&mut self.rules); diff --git a/src/rules/adjacent_overload_signatures.rs b/src/rules/adjacent_overload_signatures.rs index 8822892d2..77ca94e7c 100644 --- a/src/rules/adjacent_overload_signatures.rs +++ b/src/rules/adjacent_overload_signatures.rs @@ -3,8 +3,8 @@ use super::{Context, LintRule}; use crate::handler::{Handler, Traverse}; use crate::swc_util::StringRepr; use crate::{Program, ProgramRef}; +use deno_ast::swc::common::Spanned; use deno_ast::view as ast_view; -use deno_ast::view::Spanned; use derive_more::Display; use std::collections::HashSet; use std::sync::Arc; diff --git a/src/rules/ban_types.rs b/src/rules/ban_types.rs index 6a822bd6b..98193a802 100644 --- a/src/rules/ban_types.rs +++ b/src/rules/ban_types.rs @@ -2,8 +2,9 @@ use super::{Context, LintRule}; use crate::handler::{Handler, Traverse}; use crate::{Program, ProgramRef}; +use deno_ast::swc::common::Spanned; use deno_ast::view as ast_view; -use deno_ast::view::{Spanned, TsEntityName, TsKeywordTypeKind}; +use deno_ast::view::{TsEntityName, TsKeywordTypeKind}; use if_chain::if_chain; use std::convert::TryFrom; use std::sync::Arc; diff --git a/src/rules/camelcase.rs b/src/rules/camelcase.rs index 702b2d055..2a4a0a3ad 100644 --- a/src/rules/camelcase.rs +++ b/src/rules/camelcase.rs @@ -4,8 +4,8 @@ use crate::handler::{Handler, Traverse}; use crate::swc_util::StringRepr; use crate::ProgramRef; use deno_ast::swc::common::Span; +use deno_ast::swc::common::Spanned; use deno_ast::view as ast_view; -use deno_ast::view::Spanned; use once_cell::sync::Lazy; use regex::{Captures, Regex}; use std::collections::{BTreeMap, BTreeSet}; diff --git a/src/rules/constructor_super.rs b/src/rules/constructor_super.rs index b28fc0209..c3298c59d 100644 --- a/src/rules/constructor_super.rs +++ b/src/rules/constructor_super.rs @@ -2,8 +2,9 @@ use super::{Context, LintRule}; use crate::handler::{Handler, Traverse}; use crate::{Program, ProgramRef}; +use deno_ast::swc::common::Span; +use deno_ast::swc::common::Spanned; use deno_ast::view as ast_view; -use deno_ast::view::{Span, Spanned}; use if_chain::if_chain; use std::sync::Arc; diff --git a/src/rules/explicit_function_return_type.rs b/src/rules/explicit_function_return_type.rs index cf74680fc..e26de225d 100644 --- a/src/rules/explicit_function_return_type.rs +++ b/src/rules/explicit_function_return_type.rs @@ -2,8 +2,8 @@ use super::{Context, LintRule}; use crate::handler::{Handler, Traverse}; use crate::{Program, ProgramRef}; +use deno_ast::swc::common::Spanned; use deno_ast::view as ast_view; -use deno_ast::view::Spanned; use derive_more::Display; use std::sync::Arc; diff --git a/src/rules/no_debugger.rs b/src/rules/no_debugger.rs index e310d60dd..9970d2546 100644 --- a/src/rules/no_debugger.rs +++ b/src/rules/no_debugger.rs @@ -2,7 +2,8 @@ use super::{Context, LintRule}; use crate::handler::{Handler, Traverse}; use crate::{Program, ProgramRef}; -use deno_ast::view::{DebuggerStmt, Spanned}; +use deno_ast::swc::common::Spanned; +use deno_ast::view::DebuggerStmt; use derive_more::Display; use std::sync::Arc; diff --git a/src/rules/no_dupe_keys.rs b/src/rules/no_dupe_keys.rs index 3238ee271..af3103b01 100644 --- a/src/rules/no_dupe_keys.rs +++ b/src/rules/no_dupe_keys.rs @@ -4,9 +4,10 @@ use crate::handler::{Handler, Traverse}; use crate::swc_util::StringRepr; use crate::{Program, ProgramRef}; use deno_ast::swc::common::Span; +use deno_ast::swc::common::Spanned; use deno_ast::view::{ GetterProp, KeyValueProp, MethodProp, ObjectLit, Prop, PropOrSpread, - SetterProp, Spanned, + SetterProp, }; use derive_more::Display; use std::collections::hash_map::Entry; diff --git a/src/rules/no_empty.rs b/src/rules/no_empty.rs index 709ff6129..d4af0fcc6 100644 --- a/src/rules/no_empty.rs +++ b/src/rules/no_empty.rs @@ -2,9 +2,8 @@ use super::{Context, LintRule}; use crate::handler::{Handler, Traverse}; use crate::{Program, ProgramRef}; -use deno_ast::view::{ - ArrowExpr, BlockStmt, Constructor, Function, Spanned, SwitchStmt, -}; +use deno_ast::swc::common::Spanned; +use deno_ast::view::{ArrowExpr, BlockStmt, Constructor, Function, SwitchStmt}; use std::sync::Arc; #[derive(Debug)] diff --git a/src/rules/no_empty_character_class.rs b/src/rules/no_empty_character_class.rs index 37bd1ff64..9034d4126 100644 --- a/src/rules/no_empty_character_class.rs +++ b/src/rules/no_empty_character_class.rs @@ -2,7 +2,8 @@ use super::{Context, LintRule}; use crate::handler::{Handler, Traverse}; use crate::{Program, ProgramRef}; -use deno_ast::view::{Regex, Spanned}; +use deno_ast::swc::common::Spanned; +use deno_ast::view::Regex; use once_cell::sync::Lazy; use std::sync::Arc; diff --git a/src/rules/no_empty_interface.rs b/src/rules/no_empty_interface.rs index aee62a715..2257f8e9e 100644 --- a/src/rules/no_empty_interface.rs +++ b/src/rules/no_empty_interface.rs @@ -2,7 +2,8 @@ use super::{Context, LintRule}; use crate::handler::{Handler, Traverse}; use crate::{Program, ProgramRef}; -use deno_ast::view::{Spanned, TsInterfaceDecl}; +use deno_ast::swc::common::Spanned; +use deno_ast::view::TsInterfaceDecl; use derive_more::Display; use std::sync::Arc; diff --git a/src/rules/no_eval.rs b/src/rules/no_eval.rs index 008270980..361d467db 100644 --- a/src/rules/no_eval.rs +++ b/src/rules/no_eval.rs @@ -4,9 +4,8 @@ use crate::handler::{Handler, Traverse}; use crate::swc_util::StringRepr; use crate::{Program, ProgramRef}; use deno_ast::swc::common::Span; -use deno_ast::view::{ - CallExpr, Expr, ExprOrSuper, ParenExpr, Spanned, VarDeclarator, -}; +use deno_ast::swc::common::Spanned; +use deno_ast::view::{CallExpr, Expr, ExprOrSuper, ParenExpr, VarDeclarator}; use std::sync::Arc; #[derive(Debug)] diff --git a/src/rules/no_irregular_whitespace.rs b/src/rules/no_irregular_whitespace.rs index 6ea98cd81..3f3c8d907 100644 --- a/src/rules/no_irregular_whitespace.rs +++ b/src/rules/no_irregular_whitespace.rs @@ -87,7 +87,7 @@ impl LintRule for NoIrregularWhitespace { }; let mut last_end = BytePos(0); - for token in program.tokens().unwrap().tokens { + for token in program.token_container().unwrap().tokens { check_span(Span::new(last_end, token.span.lo(), Default::default())); last_end = token.span.hi(); } diff --git a/src/rules/no_setter_return.rs b/src/rules/no_setter_return.rs index 3cf2648d4..6f93d1b55 100644 --- a/src/rules/no_setter_return.rs +++ b/src/rules/no_setter_return.rs @@ -2,8 +2,9 @@ use super::{Context, LintRule}; use crate::handler::{Handler, Traverse}; use crate::{Program, ProgramRef}; +use deno_ast::swc::common::Spanned; use deno_ast::view as ast_view; -use deno_ast::view::{NodeTrait, Spanned}; +use deno_ast::view::NodeTrait; use std::sync::Arc; #[derive(Debug)] diff --git a/src/rules/no_this_before_super.rs b/src/rules/no_this_before_super.rs index 87261150b..d52742171 100644 --- a/src/rules/no_this_before_super.rs +++ b/src/rules/no_this_before_super.rs @@ -2,8 +2,10 @@ use super::{Context, LintRule}; use crate::handler::{Handler, Traverse}; use crate::{Program, ProgramRef}; +use deno_ast::swc::common::Span; +use deno_ast::swc::common::Spanned; use deno_ast::view as ast_view; -use deno_ast::view::{NodeTrait, Span, Spanned}; +use deno_ast::view::NodeTrait; use std::sync::Arc; #[derive(Debug)] diff --git a/src/test_util.rs b/src/test_util.rs index b9b9488ba..c2c1f1642 100644 --- a/src/test_util.rs +++ b/src/test_util.rs @@ -383,14 +383,12 @@ pub fn assert_lint_ok( const TEST_FILE_NAME: &str = "lint_test.ts"; pub fn parse(source_code: &str) -> ParsedSource { - let ast_parser = ast_parser::AstParser::new(); - ast_parser - .parse_program( - TEST_FILE_NAME, - deno_ast::get_syntax(MediaType::TypeScript), - source_code.to_string(), - ) - .unwrap() + ast_parser::parse_program( + TEST_FILE_NAME, + deno_ast::get_syntax(MediaType::TypeScript), + source_code.to_string(), + ) + .unwrap() } pub fn parse_and_then(source_code: &str, test: impl Fn(ast_view::Program)) {