Skip to content

Commit

Permalink
v0.25.0
Browse files Browse the repository at this point in the history
- Use "swc_ecmascript" crate instead of "swc_ecma_ast" 
  and "swc_ecma_parser"

- Remove SWC reexports
  • Loading branch information
bartlomieju authored Jul 31, 2020
2 parents c085d21 + 2271ba2 commit a55514c
Show file tree
Hide file tree
Showing 10 changed files with 209 additions and 384 deletions.
315 changes: 77 additions & 238 deletions Cargo.lock

Large diffs are not rendered by default.

7 changes: 3 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "dprint-plugin-typescript"
description = "TypeScript code formatting plugin for Dprint."
keywords = ["formatting", "formatter", "typescript"]
version = "0.24.0"
version = "0.25.0"
authors = ["David Sherret <[email protected]>"]
edition = "2018"
license = "MIT"
Expand All @@ -22,9 +22,8 @@ panic = "abort"

[dependencies]
dprint-core = "0.24.1"
swc_common = "=0.7.0"
swc_ecma_ast = "=0.26.0"
swc_ecma_parser = "=0.31.0"
swc_common = "=0.8.0"
swc_ecmascript = { version = "=0.1.0", features = ["parser"] }
serde = { version = "1.0.88", features = ["derive"] }
serde_json = "1.0"

Expand Down
8 changes: 0 additions & 8 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,3 @@ pub use formatter::Formatter;

#[cfg(all(target_arch = "wasm32", target_os = "unknown"))]
pub use wasm_plugin::*;

// Re-export swc for use in Deno
#[doc(hidden)]
pub use swc_common;
#[doc(hidden)]
pub use swc_ecma_ast;
#[doc(hidden)]
pub use swc_ecma_parser;
2 changes: 1 addition & 1 deletion src/parsing/comments.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use std::collections::HashMap;
use super::*;
use swc_common::{BytePos, comments::{Comment}};
use swc_ecma_parser::{token::{Token, TokenAndSpan}};
use swc_ecmascript::parser::{token::{Token, TokenAndSpan}};

pub struct CommentCollection<'a> {
leading: &'a HashMap<BytePos, Vec<Comment>>,
Expand Down
140 changes: 70 additions & 70 deletions src/parsing/parser.rs

Large diffs are not rendered by default.

93 changes: 43 additions & 50 deletions src/parsing/parser_types.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use std::str;
use std::collections::{HashSet, HashMap};
use dprint_core::{Info, ConditionReference};
use swc_common::{SpanData, BytePos, comments::{Comment, CommentKind}, SourceFile, Spanned, Span};
use swc_ecma_ast::*;
use swc_ecma_parser::{token::TokenAndSpan};
use swc_common::{BytePos, comments::{Comment, CommentKind}, SourceFile, Spanned, Span};
use swc_ecmascript::ast::*;
use swc_ecmascript::parser::{token::TokenAndSpan};
use super::*;
use super::super::configuration::*;
use super::super::utils::Stack;
Expand All @@ -20,7 +20,7 @@ pub struct Context<'a> {
stored_infos: HashMap<(BytePos, BytePos), Info>,
stored_info_ranges: HashMap<(BytePos, BytePos), (Info, Info)>,
pub end_statement_or_member_infos: Stack<Info>,
before_comments_start_info_stack: Stack<(SpanData, Info)>,
before_comments_start_info_stack: Stack<(Span, Info)>,
if_stmt_last_brace_condition_ref: Option<ConditionReference>,
/// Used for ensuring nodes are parsed in order.
#[cfg(debug_assertions)]
Expand Down Expand Up @@ -147,37 +147,31 @@ pub trait NodeKinded {
}

pub trait SpanDataContainer {
fn span_data(&self) -> SpanData;
fn span_data(&self) -> Span;
}

impl SpanDataContainer for &dyn SpanDataContainer {
fn span_data(&self) -> SpanData {
fn span_data(&self) -> Span {
(**self).span_data()
}
}

impl SpanDataContainer for TokenAndSpan {
fn span_data(&self) -> SpanData {
fn span_data(&self) -> Span {
self.span
}
}

impl SpanDataContainer for Comment {
fn span_data(&self) -> SpanData {
self.span.data()
}
}

impl SpanDataContainer for SpanData {
fn span_data(&self) -> SpanData {
self.clone()
fn span_data(&self) -> Span {
self.span
}
}

impl SpanDataContainer for BytePos {
fn span_data(&self) -> SpanData {
fn span_data(&self) -> Span {
// todo: change this so this allocation isn't necessary
SpanData {
Span {
lo: *self,
hi: *self,
ctxt: Default::default(),
Expand All @@ -186,7 +180,7 @@ impl SpanDataContainer for BytePos {
}

impl<T> SpanDataContainer for std::boxed::Box<T> where T : SpanDataContainer {
fn span_data(&self) -> SpanData {
fn span_data(&self) -> Span {
(**self).span_data()
}
}
Expand Down Expand Up @@ -332,8 +326,8 @@ macro_rules! generate_node {
}
}
impl SpanDataContainer for $node_name {
fn span_data(&self) -> SpanData {
self.span().data()
fn span_data(&self) -> Span {
self.span()
}
}
)*
Expand All @@ -353,9 +347,9 @@ macro_rules! generate_node {
)*

impl<'a> SpanDataContainer for Node<'a> {
fn span_data(&self) -> SpanData {
fn span_data(&self) -> Span {
match self {
$(Node::$node_name(node) => node.span().data()),*
$(Node::$node_name(node) => node.span()),*
}
}
}
Expand Down Expand Up @@ -588,9 +582,9 @@ macro_rules! generate_traits {
}

impl SpanDataContainer for $enum_name {
fn span_data(&self) -> SpanData {
fn span_data(&self) -> Span {
match self {
$($enum_name::$member_name(node) => node.span().data()),*
$($enum_name::$member_name(node) => node.span()),*
}
}
}
Expand Down Expand Up @@ -648,32 +642,31 @@ generate_traits![JSXObject, JSXMemberExpr, Ident];
/* InnerSpanned */

pub trait InnerSpanned {
fn get_inner_span_data(&self, context: &mut Context) -> SpanData;
fn get_inner_span_data(&self, context: &mut Context) -> Span;
}

impl InnerSpanned for BlockStmt {
fn get_inner_span_data(&self, _: &mut Context) -> SpanData {
fn get_inner_span_data(&self, _: &mut Context) -> Span {
get_inner_span_for_object_like(&self.span)
}
}

impl InnerSpanned for ObjectLit {
fn get_inner_span_data(&self, _: &mut Context) -> SpanData {
fn get_inner_span_data(&self, _: &mut Context) -> Span {
get_inner_span_for_object_like(&self.span)
}
}

impl InnerSpanned for ObjectPat {
fn get_inner_span_data(&self, _: &mut Context) -> SpanData {
fn get_inner_span_data(&self, _: &mut Context) -> Span {
get_inner_span_for_object_like(&self.span)
}
}

fn get_inner_span_for_object_like(span: &Span) -> SpanData {
let span_data = span.data();
SpanData {
lo: BytePos(span_data.lo.0 + 1),
hi: BytePos(span_data.hi.0 - 1),
fn get_inner_span_for_object_like(span: &Span) -> Span {
Span {
lo: BytePos(span.lo.0 + 1),
hi: BytePos(span.hi.0 - 1),
ctxt: Default::default()
}
}
Expand Down Expand Up @@ -702,11 +695,11 @@ impl<'a> Node<'a> {
/* ParametersSpanned */

pub trait ParametersSpanned {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData>;
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span>;
}

impl ParametersSpanned for Function {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
self.params.iter().map(|x| x.span_data()).collect(),
Expand All @@ -719,13 +712,13 @@ impl ParametersSpanned for Function {
}

impl ParametersSpanned for ClassMethod {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
self.function.get_parameters_span_data(context)
}
}

impl ParametersSpanned for Constructor {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
self.params.iter().map(|x| x.span_data()).collect(),
Expand All @@ -737,13 +730,13 @@ impl ParametersSpanned for Constructor {
}

impl ParametersSpanned for MethodProp {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
self.function.get_parameters_span_data(context)
}
}

impl ParametersSpanned for GetterProp {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
vec![],
Expand All @@ -756,7 +749,7 @@ impl ParametersSpanned for GetterProp {
}

impl ParametersSpanned for SetterProp {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
vec![self.param.span_data()],
Expand All @@ -767,7 +760,7 @@ impl ParametersSpanned for SetterProp {
}

impl ParametersSpanned for ArrowExpr {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
self.params.iter().map(|x| x.span_data()).collect(),
Expand All @@ -778,7 +771,7 @@ impl ParametersSpanned for ArrowExpr {
}

impl ParametersSpanned for CallExpr {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
self.args.iter().map(|a| a.span_data()).collect(),
Expand All @@ -789,7 +782,7 @@ impl ParametersSpanned for CallExpr {
}

impl ParametersSpanned for NewExpr {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
self.args.as_ref().map(|args| args.iter().map(|a| a.span_data()).collect()).unwrap_or_default(),
Expand All @@ -800,7 +793,7 @@ impl ParametersSpanned for NewExpr {
}

impl ParametersSpanned for TsCallSignatureDecl {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
self.params.iter().map(|x| x.span_data()).collect(),
Expand All @@ -811,7 +804,7 @@ impl ParametersSpanned for TsCallSignatureDecl {
}

impl ParametersSpanned for TsConstructSignatureDecl {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
self.params.iter().map(|x| x.span_data()).collect(),
Expand All @@ -822,7 +815,7 @@ impl ParametersSpanned for TsConstructSignatureDecl {
}

impl ParametersSpanned for TsMethodSignature {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
self.params.iter().map(|x| x.span_data()).collect(),
Expand All @@ -833,7 +826,7 @@ impl ParametersSpanned for TsMethodSignature {
}

impl ParametersSpanned for TsConstructorType {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
self.params.iter().map(|x| x.span_data()).collect(),
Expand All @@ -844,7 +837,7 @@ impl ParametersSpanned for TsConstructorType {
}

impl ParametersSpanned for TsFnType {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<SpanData> {
fn get_parameters_span_data(&self, context: &mut Context) -> Option<Span> {
get_params_or_args_span_data(
self.lo(),
self.params.iter().map(|x| x.span_data()).collect(),
Expand All @@ -854,7 +847,7 @@ impl ParametersSpanned for TsFnType {
}
}

fn get_params_or_args_span_data(start_pos: BytePos, params: Vec<SpanData>, following_pos: BytePos, context: &mut Context) -> Option<SpanData> {
fn get_params_or_args_span_data(start_pos: BytePos, params: Vec<Span>, following_pos: BytePos, context: &mut Context) -> Option<Span> {
let close_token_end = {
let close_paren = if let Some(last_param) = params.last() {
context.token_finder.get_first_close_paren_after(last_param)
Expand Down Expand Up @@ -893,7 +886,7 @@ fn get_params_or_args_span_data(start_pos: BytePos, params: Vec<SpanData>, follo
}
}?;

Some(SpanData {
Some(Span {
lo: close_token_start,
hi: close_token_end,
ctxt: Default::default(),
Expand Down
2 changes: 1 addition & 1 deletion src/parsing/swc/extensions.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use swc_ecma_ast::BinaryOp;
use swc_ecmascript::ast::BinaryOp;

pub trait BinaryOpExtensions {
fn is_add_sub(&self) -> bool;
Expand Down
4 changes: 2 additions & 2 deletions src/parsing/swc/flatten_binary_expr.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use swc_ecma_ast::*;
use swc_ecma_parser::{token::{TokenAndSpan}};
use swc_ecmascript::ast::*;
use swc_ecmascript::parser::{token::{TokenAndSpan}};

use super::*;
use super::super::*;
Expand Down
6 changes: 3 additions & 3 deletions src/parsing/tokens.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use std::str;
use super::*;
use swc_common::{BytePos, SpanData};
use swc_ecma_parser::{token::{Token, TokenAndSpan}};
use swc_common::{BytePos, Span};
use swc_ecmascript::parser::{token::{Token, TokenAndSpan}};
use dprint_core::tokens::{TokenFinder as CoreTokenFinder, TokenCollection};

pub struct TokenFinder<'a> {
Expand Down Expand Up @@ -191,7 +191,7 @@ impl<'a> TokenFinder<'a> {
}
}

fn get_text<'a>(file_bytes: &'a [u8], span_data: &SpanData) -> &'a str {
fn get_text<'a>(file_bytes: &'a [u8], span_data: &Span) -> &'a str {
let bytes = &file_bytes[(span_data.lo.0 as usize)..(span_data.hi.0 as usize)];
str::from_utf8(&bytes).unwrap()
}
Expand Down
Loading

0 comments on commit a55514c

Please sign in to comment.