Skip to content

Commit 9aa8b53

Browse files
committed
I need more macro
1 parent a66849c commit 9aa8b53

File tree

12 files changed

+62
-37
lines changed

12 files changed

+62
-37
lines changed

ecmascript/ast/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ swc_atoms = { version = "0.2", path ="../../atoms" }
1414
swc_common = { version = "0.7", path ="../../common" }
1515
enum_kind = { version = "0.2", path ="../../macros/enum_kind" }
1616
string_enum = { version = "0.3", path ="../../macros/string_enum" }
17+
is-macro = "0.1"
1718
num-bigint = { version = "0.2", features = ["serde"] }
1819

1920
[dev-dependencies]

ecmascript/ast/src/class.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use crate::{
1010
},
1111
EmptyStmt,
1212
};
13+
use is_macro::Is;
1314
use serde::{Deserialize, Serialize};
1415
use swc_common::{ast_node, Span};
1516

@@ -42,7 +43,7 @@ pub struct Class {
4243
}
4344

4445
#[ast_node]
45-
#[derive(Eq, Hash)]
46+
#[derive(Eq, Hash, Is)]
4647
pub enum ClassMember {
4748
#[tag("Constructor")]
4849
Constructor(Constructor),

ecmascript/ast/src/decl.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@ use crate::{
66
pat::Pat,
77
typescript::{TsEnumDecl, TsInterfaceDecl, TsModuleDecl, TsTypeAliasDecl},
88
};
9+
use is_macro::Is;
910
use string_enum::StringEnum;
1011
use swc_common::{ast_node, Span};
1112

1213
#[ast_node]
13-
#[derive(Eq, Hash)]
14+
#[derive(Eq, Hash, Is)]
1415
pub enum Decl {
1516
#[tag("ClassDeclaration")]
1617
Class(ClassDecl),
1718
#[tag("FunctionDeclaration")]
19+
#[is(name = "fn_decl")]
1820
Fn(FnDecl),
1921
#[tag("VariableDeclaration")]
2022
Var(VarDecl),

ecmascript/ast/src/expr.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ use crate::{
1515
},
1616
Invalid,
1717
};
18+
use is_macro::Is;
1819
use serde::{self, Deserialize, Serialize};
1920
use swc_common::{ast_node, Span, Spanned, DUMMY_SP};
2021

2122
#[ast_node]
22-
#[derive(Eq, Hash)]
23+
#[derive(Eq, Hash, Is)]
2324
pub enum Expr {
2425
#[tag("ThisExpression")]
2526
This(ThisExpr),
@@ -31,6 +32,7 @@ pub enum Expr {
3132
Object(ObjectLit),
3233

3334
#[tag("FunctionExpression")]
35+
#[is(name = "fn_expr")]
3436
Fn(FnExpr),
3537

3638
#[tag("UnaryExpression")]
@@ -99,12 +101,14 @@ pub enum Expr {
99101
Class(ClassExpr),
100102

101103
#[tag("YieldExpression")]
104+
#[is(name = "yield_expr")]
102105
Yield(YieldExpr),
103106

104107
#[tag("MetaProperty")]
105108
MetaProp(MetaPropExpr),
106109

107110
#[tag("AwaitExpression")]
111+
#[is(name = "await_expr")]
108112
Await(AwaitExpr),
109113

110114
#[tag("ParenthesisExpression")]
@@ -177,7 +181,7 @@ pub struct ObjectLit {
177181
}
178182

179183
#[ast_node]
180-
#[derive(Eq, Hash)]
184+
#[derive(Eq, Hash, Is)]
181185
pub enum PropOrSpread {
182186
/// Spread properties, e.g., `{a: 1, ...obj, b: 2}`.
183187
#[tag("SpreadElement")]
@@ -442,9 +446,10 @@ pub struct ParenExpr {
442446

443447
#[ast_node]
444448
#[allow(variant_size_differences)]
445-
#[derive(Eq, Hash)]
449+
#[derive(Eq, Hash, Is)]
446450
pub enum ExprOrSuper {
447451
#[tag("Super")]
452+
#[is(name = "super_")]
448453
Super(Super),
449454

450455
#[tag("*")]
@@ -477,7 +482,7 @@ impl Spanned for ExprOrSpread {
477482
}
478483

479484
#[ast_node]
480-
#[derive(Eq, Hash)]
485+
#[derive(Eq, Hash, Is)]
481486
#[allow(variant_size_differences)]
482487
pub enum BlockStmtOrExpr {
483488
#[tag("BlockStatement")]
@@ -487,7 +492,7 @@ pub enum BlockStmtOrExpr {
487492
}
488493

489494
#[ast_node]
490-
#[derive(Eq, Hash)]
495+
#[derive(Eq, Hash, Is)]
491496
pub enum PatOrExpr {
492497
#[tag("ThisExpression")]
493498
#[tag("ArrayExpression")]

ecmascript/ast/src/function.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::{
44
stmt::BlockStmt,
55
typescript::{TsParamProp, TsTypeAnn, TsTypeParamDecl},
66
};
7+
use is_macro::Is;
78
use swc_common::{ast_node, Span};
89

910
/// Common parts of function and method.
@@ -44,7 +45,7 @@ pub struct Param {
4445
}
4546

4647
#[ast_node]
47-
#[derive(Eq, Hash)]
48+
#[derive(Eq, Hash, Is)]
4849
pub enum ParamOrTsParamProp {
4950
#[tag("TsParameterProperty")]
5051
TsParamProp(TsParamProp),

ecmascript/ast/src/jsx.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@ use crate::{
44
lit::Lit,
55
typescript::TsTypeParamInstantiation,
66
};
7+
use is_macro::Is;
78
use swc_atoms::JsWord;
89
use swc_common::{ast_node, Span};
910

1011
/// Used for `obj` property of `JSXMemberExpr`.
1112
#[ast_node]
12-
#[derive(Eq, Hash)]
13+
#[derive(Eq, Hash, Is)]
1314
#[allow(variant_size_differences)]
1415
pub enum JSXObject {
1516
#[tag("JSXMemberExpression")]

ecmascript/ast/src/module.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
use crate::{module_decl::ModuleDecl, stmt::Stmt};
2+
use is_macro::Is;
23
use swc_atoms::JsWord;
34
use swc_common::{ast_node, Span};
45

56
#[ast_node]
6-
#[derive(Eq, Hash)]
7+
#[derive(Eq, Hash, Is)]
78
pub enum Program {
89
#[tag("Module")]
910
Module(Module),
@@ -34,7 +35,7 @@ pub struct Script {
3435
}
3536

3637
#[ast_node]
37-
#[derive(Eq, Hash)]
38+
#[derive(Eq, Hash, Is)]
3839
pub enum ModuleItem {
3940
#[tag("ImportDeclaration")]
4041
#[tag("ExportDeclaration")]

ecmascript/ast/src/module_decl.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ use crate::{
55
lit::Str,
66
typescript::{TsExportAssignment, TsImportEqualsDecl, TsInterfaceDecl, TsNamespaceExportDecl},
77
};
8+
use is_macro::Is;
89
use swc_common::{ast_node, Span};
910

1011
#[ast_node]
11-
#[derive(Eq, Hash)]
12+
#[derive(Eq, Hash, Is)]
1213
pub enum ModuleDecl {
1314
#[tag("ImportDeclaration")]
1415
Import(ImportDecl),
@@ -106,20 +107,21 @@ pub struct ExportDefaultDecl {
106107
}
107108

108109
#[ast_node]
109-
#[derive(Eq, Hash)]
110+
#[derive(Eq, Hash, Is)]
110111
pub enum DefaultDecl {
111112
#[tag("ClassExpression")]
112113
Class(ClassExpr),
113114

114115
#[tag("FunctionExpression")]
116+
#[is(name = "fn_expr")]
115117
Fn(FnExpr),
116118

117119
#[tag("TsInterfaceDeclaration")]
118120
TsInterfaceDecl(TsInterfaceDecl),
119121
}
120122

121123
#[ast_node]
122-
#[derive(Eq, Hash)]
124+
#[derive(Eq, Hash, Is)]
123125
pub enum ImportSpecifier {
124126
#[tag("ImportSpecifier")]
125127
Named(ImportNamedSpecifier),
@@ -160,7 +162,7 @@ pub struct ImportNamedSpecifier {
160162
}
161163

162164
#[ast_node]
163-
#[derive(Eq, Hash)]
165+
#[derive(Eq, Hash, Is)]
164166
pub enum ExportSpecifier {
165167
#[tag("ExportNamespaceSpecifier")]
166168
Namespace(ExportNamespaceSpecifier),

ecmascript/ast/src/pat.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
use crate::{expr::Expr, ident::Ident, prop::PropName, typescript::TsTypeAnn, Invalid};
2+
use is_macro::Is;
23
use swc_common::{ast_node, Span};
34

45
#[ast_node]
5-
#[derive(Eq, Hash)]
6+
#[derive(Eq, Hash, Is)]
67
pub enum Pat {
78
#[tag("Identifier")]
89
Ident(Ident),
@@ -89,7 +90,7 @@ pub struct RestPat {
8990
}
9091

9192
#[ast_node]
92-
#[derive(Eq, Hash)]
93+
#[derive(Eq, Hash, Is)]
9394
pub enum ObjectPatProp {
9495
#[tag("KeyValuePatternProperty")]
9596
KeyValue(KeyValuePatProp),

ecmascript/ast/src/prop.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ use crate::{
77
stmt::BlockStmt,
88
typescript::TsTypeAnn,
99
};
10+
use is_macro::Is;
1011
use swc_common::{ast_node, Span};
1112

1213
#[ast_node]
13-
#[derive(Eq, Hash)]
14+
#[derive(Eq, Hash, Is)]
1415
pub enum Prop {
1516
/// `a` in `{ a, }`
1617
#[tag("Identifier")]
@@ -83,7 +84,7 @@ pub struct MethodProp {
8384
}
8485

8586
#[ast_node]
86-
#[derive(Eq, Hash)]
87+
#[derive(Eq, Hash, Is)]
8788
pub enum PropName {
8889
#[tag("Identifier")]
8990
Ident(Ident),

ecmascript/ast/src/stmt.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::{
44
ident::Ident,
55
pat::Pat,
66
};
7+
use is_macro::Is;
78
use swc_common::{ast_node, Span};
89

910
/// Use when only block statements are allowed.
@@ -17,7 +18,7 @@ pub struct BlockStmt {
1718
}
1819

1920
#[ast_node]
20-
#[derive(Eq, Hash)]
21+
#[derive(Eq, Hash, Is)]
2122
pub enum Stmt {
2223
#[tag("BlockStatement")]
2324
Block(BlockStmt),
@@ -32,18 +33,22 @@ pub enum Stmt {
3233
With(WithStmt),
3334

3435
#[tag("ReturnStatement")]
36+
#[is(name = "return_stmt")]
3537
Return(ReturnStmt),
3638

3739
#[tag("LabeledStatement")]
3840
Labeled(LabeledStmt),
3941

4042
#[tag("BreakStatement")]
43+
#[is(name = "break_stmt")]
4144
Break(BreakStmt),
4245

4346
#[tag("ContinueStatement")]
47+
#[is(name = "continue_stmt")]
4448
Continue(ContinueStmt),
4549

4650
#[tag("IfStatement")]
51+
#[is(name = "if_stmt")]
4752
If(IfStmt),
4853

4954
#[tag("SwitchStatement")]
@@ -54,15 +59,18 @@ pub enum Stmt {
5459

5560
/// A try statement. If handler is null then finalizer must be a BlockStmt.
5661
#[tag("TryStatement")]
62+
#[is(name = "try_stmt")]
5763
Try(TryStmt),
5864

5965
#[tag("WhileStatement")]
66+
#[is(name = "while_stmt")]
6067
While(WhileStmt),
6168

6269
#[tag("DoWhileStatement")]
6370
DoWhile(DoWhileStmt),
6471

6572
#[tag("ForStatement")]
73+
#[is(name = "for_stmt")]
6674
For(ForStmt),
6775

6876
#[tag("ForInStatement")]
@@ -275,7 +283,7 @@ pub struct CatchClause {
275283
}
276284

277285
#[ast_node]
278-
#[derive(Eq, Hash)]
286+
#[derive(Eq, Hash, Is)]
279287
pub enum VarDeclOrPat {
280288
#[tag("VariableDeclaration")]
281289
VarDecl(VarDecl),
@@ -285,7 +293,7 @@ pub enum VarDeclOrPat {
285293
}
286294

287295
#[ast_node]
288-
#[derive(Eq, Hash)]
296+
#[derive(Eq, Hash, Is)]
289297
#[allow(variant_size_differences)]
290298
pub enum VarDeclOrExpr {
291299
#[tag("VariableDeclaration")]

0 commit comments

Comments
 (0)