Skip to content

Commit 39f5318

Browse files
authored
feat(es/ast): Add node id to Ident (#10973)
1 parent c8a2668 commit 39f5318

File tree

4,848 files changed

+143102
-62
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

4,848 files changed

+143102
-62
lines changed

bindings/binding_core_wasm/__tests__/simple.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ describe("parse", () => {
111111
"decorators": [],
112112
"identifier": {
113113
"ctxt": 2,
114+
"nodeId": 4294967295,
114115
"optional": false,
115116
"span": {
116117
"end": 254,
@@ -157,6 +158,7 @@ describe("parse", () => {
157158
"decorators": [],
158159
"identifier": {
159160
"ctxt": 2,
161+
"nodeId": 4294967295,
160162
"optional": false,
161163
"span": {
162164
"end": 267,

crates/swc_common/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ pub use swc_eq_ignore_macros::{EqIgnoreSpan, TypeEq};
3939
pub use self::{
4040
eq::{EqIgnoreSpan, TypeEq},
4141
errors::{SourceMapper, SourceMapperDyn},
42+
node_id::NodeId,
4243
pos::{
4344
hygiene, BytePos, CharPos, FileName, Globals, Loc, LocWithOpt, Mark, MultiSpan, SourceFile,
4445
SourceFileAndBytePos, SourceFileAndLine, Span, SpanLinesError, Spanned, SyntaxContext,
@@ -59,6 +60,7 @@ mod eq;
5960
pub mod errors;
6061
pub mod input;
6162
pub mod iter;
63+
mod node_id;
6264
pub mod pass;
6365
pub mod plugin;
6466
mod pos;

crates/swc_common/src/node_id.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
use crate::util::take::Take;
2+
3+
#[derive(Eq, Hash, Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize)]
4+
#[cfg_attr(
5+
any(feature = "rkyv-impl"),
6+
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
7+
)]
8+
#[cfg_attr(feature = "rkyv-impl", derive(bytecheck::CheckBytes))]
9+
#[cfg_attr(feature = "rkyv-impl", repr(C))]
10+
#[cfg_attr(feature = "shrink-to-fit", derive(shrink_to_fit::ShrinkToFit))]
11+
pub struct NodeId(#[cfg_attr(feature = "__rkyv", rkyv(omit_bounds))] u32);
12+
13+
impl NodeId {
14+
pub const DUMMY: NodeId = NodeId(u32::MAX);
15+
}
16+
17+
impl Default for NodeId {
18+
fn default() -> Self {
19+
NodeId::DUMMY
20+
}
21+
}
22+
23+
impl Take for NodeId {
24+
fn dummy() -> Self {
25+
NodeId::DUMMY
26+
}
27+
}

crates/swc_ecma_ast/src/ident.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ use phf::phf_set;
99
use rustc_hash::FxHashSet;
1010
use swc_atoms::{atom, Atom, UnsafeAtom};
1111
use swc_common::{
12-
ast_node, util::take::Take, BytePos, EqIgnoreSpan, Mark, Span, Spanned, SyntaxContext, DUMMY_SP,
12+
ast_node, util::take::Take, BytePos, EqIgnoreSpan, Mark, NodeId, Span, Spanned, SyntaxContext,
13+
DUMMY_SP,
1314
};
1415

1516
use crate::{typescript::TsTypeAnn, Expr};
@@ -91,6 +92,7 @@ impl From<&'_ BindingIdent> for Ident {
9192
ctxt: bi.ctxt,
9293
sym: bi.sym.clone(),
9394
optional: bi.optional,
95+
node_id: bi.node_id,
9496
}
9597
}
9698
}
@@ -179,6 +181,9 @@ pub struct Ident {
179181
#[cfg_attr(feature = "__rkyv", rkyv(omit_bounds))]
180182
pub ctxt: SyntaxContext,
181183

184+
#[cfg_attr(feature = "__rkyv", rkyv(omit_bounds))]
185+
pub node_id: NodeId,
186+
182187
#[cfg_attr(feature = "serde-impl", serde(rename = "value"))]
183188
pub sym: Atom,
184189

@@ -565,6 +570,7 @@ impl<'a> arbitrary::Arbitrary<'a> for Ident {
565570
sym,
566571
optional,
567572
ctxt: Default::default(),
573+
node_id: NodeId::DUMMY,
568574
})
569575
}
570576
}
@@ -592,6 +598,7 @@ impl Ident {
592598
ctxt,
593599
sym,
594600
optional: false,
601+
node_id: NodeId::DUMMY,
595602
}
596603
}
597604

crates/swc_ecma_ast/src/lib.rs

Lines changed: 59 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ mod rkyv_layout_assert {
511511
assert_size!(ArchivedProgram, 32);
512512
assert_size!(ArchivedModule, 28);
513513
assert_size!(ArchivedScript, 28);
514-
assert_size!(ArchivedModuleItem, 52);
514+
assert_size!(ArchivedModuleItem, 56);
515515

516516
// Class types
517517
assert_size!(ArchivedAutoAccessor, 96);
@@ -528,13 +528,13 @@ mod rkyv_layout_assert {
528528
assert_size!(ArchivedStaticBlock, 28);
529529

530530
// Declaration types
531-
assert_size!(ArchivedClassDecl, 32);
532-
assert_size!(ArchivedDecl, 36);
533-
assert_size!(ArchivedFnDecl, 32);
531+
assert_size!(ArchivedClassDecl, 36);
532+
assert_size!(ArchivedDecl, 40);
533+
assert_size!(ArchivedFnDecl, 36);
534534
assert_size!(ArchivedUsingDecl, 20);
535535
assert_size!(ArchivedVarDecl, 24);
536536
assert_size!(ArchivedVarDeclKind, 1);
537-
assert_size!(ArchivedVarDeclarator, 56);
537+
assert_size!(ArchivedVarDeclarator, 60);
538538

539539
// Expression types
540540
assert_size!(ArchivedArrayLit, 16);
@@ -546,11 +546,11 @@ mod rkyv_layout_assert {
546546
assert_size!(ArchivedBlockStmtOrExpr, 24);
547547
assert_size!(ArchivedCallExpr, 44);
548548
assert_size!(ArchivedCallee, 16);
549-
assert_size!(ArchivedClassExpr, 32);
549+
assert_size!(ArchivedClassExpr, 36);
550550
assert_size!(ArchivedCondExpr, 20);
551551
assert_size!(ArchivedExpr, 64);
552552
assert_size!(ArchivedExprOrSpread, 16);
553-
assert_size!(ArchivedFnExpr, 32);
553+
assert_size!(ArchivedFnExpr, 36);
554554
assert_size!(ArchivedImport, 12);
555555
assert_size!(ArchivedMemberExpr, 32);
556556
assert_size!(ArchivedMemberProp, 20);
@@ -578,12 +578,12 @@ mod rkyv_layout_assert {
578578

579579
// Function types
580580
assert_size!(ArchivedFunction, 72);
581-
assert_size!(ArchivedParam, 52);
582-
assert_size!(ArchivedParamOrTsParamProp, 60);
581+
assert_size!(ArchivedParam, 56);
582+
assert_size!(ArchivedParamOrTsParamProp, 64);
583583

584584
// Identifier types
585-
assert_size!(ArchivedBindingIdent, 32);
586-
assert_size!(ArchivedIdent, 24);
585+
assert_size!(ArchivedBindingIdent, 36);
586+
assert_size!(ArchivedIdent, 28);
587587
assert_size!(ArchivedIdentName, 16);
588588
assert_size!(ArchivedPrivateName, 16);
589589

@@ -592,19 +592,19 @@ mod rkyv_layout_assert {
592592
assert_size!(ArchivedJSXAttrName, 44);
593593
assert_size!(ArchivedJSXAttrOrSpread, 120);
594594
assert_size!(ArchivedJSXAttrValue, 48);
595-
assert_size!(ArchivedJSXClosingElement, 64);
595+
assert_size!(ArchivedJSXClosingElement, 68);
596596
assert_size!(ArchivedJSXClosingFragment, 8);
597-
assert_size!(ArchivedJSXElement, 168);
597+
assert_size!(ArchivedJSXElement, 176);
598598
assert_size!(ArchivedJSXElementChild, 36);
599-
assert_size!(ArchivedJSXElementName, 56);
599+
assert_size!(ArchivedJSXElementName, 60);
600600
assert_size!(ArchivedJSXEmptyExpr, 8);
601601
assert_size!(ArchivedJSXExpr, 12);
602602
assert_size!(ArchivedJSXExprContainer, 20);
603603
assert_size!(ArchivedJSXFragment, 32);
604-
assert_size!(ArchivedJSXMemberExpr, 52);
604+
assert_size!(ArchivedJSXMemberExpr, 56);
605605
assert_size!(ArchivedJSXNamespacedName, 40);
606-
assert_size!(ArchivedJSXObject, 28);
607-
assert_size!(ArchivedJSXOpeningElement, 84);
606+
assert_size!(ArchivedJSXObject, 32);
607+
assert_size!(ArchivedJSXOpeningElement, 88);
608608
assert_size!(ArchivedJSXOpeningFragment, 8);
609609
assert_size!(ArchivedJSXSpreadChild, 12);
610610
assert_size!(ArchivedJSXText, 24);
@@ -619,21 +619,21 @@ mod rkyv_layout_assert {
619619
assert_size!(ArchivedStr, 28);
620620

621621
// Module declaration types
622-
assert_size!(ArchivedDefaultDecl, 36);
622+
assert_size!(ArchivedDefaultDecl, 40);
623623
assert_size!(ArchivedExportAll, 24);
624-
assert_size!(ArchivedExportDecl, 44);
625-
assert_size!(ArchivedExportDefaultDecl, 44);
624+
assert_size!(ArchivedExportDecl, 48);
625+
assert_size!(ArchivedExportDefaultDecl, 48);
626626
assert_size!(ArchivedExportDefaultExpr, 12);
627-
assert_size!(ArchivedExportDefaultSpecifier, 24);
627+
assert_size!(ArchivedExportDefaultSpecifier, 28);
628628
assert_size!(ArchivedExportNamedSpecifier, 80);
629629
assert_size!(ArchivedExportNamespaceSpecifier, 40);
630630
assert_size!(ArchivedExportSpecifier, 84);
631631
assert_size!(ArchivedImportDecl, 36);
632-
assert_size!(ArchivedImportDefaultSpecifier, 32);
633-
assert_size!(ArchivedImportNamedSpecifier, 72);
634-
assert_size!(ArchivedImportSpecifier, 76);
635-
assert_size!(ArchivedImportStarAsSpecifier, 32);
636-
assert_size!(ArchivedModuleDecl, 48);
632+
assert_size!(ArchivedImportDefaultSpecifier, 36);
633+
assert_size!(ArchivedImportNamedSpecifier, 76);
634+
assert_size!(ArchivedImportSpecifier, 80);
635+
assert_size!(ArchivedImportStarAsSpecifier, 36);
636+
assert_size!(ArchivedModuleDecl, 52);
637637
assert_size!(ArchivedModuleExportName, 32);
638638
assert_size!(ArchivedNamedExport, 36);
639639

@@ -646,15 +646,15 @@ mod rkyv_layout_assert {
646646
// Pattern types
647647
assert_size!(ArchivedArrayPat, 28);
648648
assert_size!(ArchivedAssignPat, 16);
649-
assert_size!(ArchivedAssignPatProp, 48);
649+
assert_size!(ArchivedAssignPatProp, 52);
650650
assert_size!(ArchivedKeyValuePatProp, 48);
651651
assert_size!(ArchivedObjectPat, 28);
652652
assert_size!(ArchivedObjectPatProp, 56);
653-
assert_size!(ArchivedPat, 36);
653+
assert_size!(ArchivedPat, 40);
654654
assert_size!(ArchivedRestPat, 28);
655655

656656
// Property types
657-
assert_size!(ArchivedAssignProp, 36);
657+
assert_size!(ArchivedAssignProp, 40);
658658
assert_size!(ArchivedComputedPropName, 12);
659659
assert_size!(ArchivedGetterProp, 80);
660660
assert_size!(ArchivedKeyValueProp, 48);
@@ -665,9 +665,9 @@ mod rkyv_layout_assert {
665665

666666
// Statement types
667667
assert_size!(ArchivedBlockStmt, 20);
668-
assert_size!(ArchivedBreakStmt, 36);
669-
assert_size!(ArchivedCatchClause, 68);
670-
assert_size!(ArchivedContinueStmt, 36);
668+
assert_size!(ArchivedBreakStmt, 40);
669+
assert_size!(ArchivedCatchClause, 72);
670+
assert_size!(ArchivedContinueStmt, 40);
671671
assert_size!(ArchivedDebuggerStmt, 8);
672672
assert_size!(ArchivedDoWhileStmt, 16);
673673
assert_size!(ArchivedEmptyStmt, 8);
@@ -677,13 +677,13 @@ mod rkyv_layout_assert {
677677
assert_size!(ArchivedForOfStmt, 28);
678678
assert_size!(ArchivedForStmt, 40);
679679
assert_size!(ArchivedIfStmt, 24);
680-
assert_size!(ArchivedLabeledStmt, 36);
680+
assert_size!(ArchivedLabeledStmt, 40);
681681
assert_size!(ArchivedReturnStmt, 16);
682682
assert_size!(ArchivedStmt, 44);
683683
assert_size!(ArchivedSwitchCase, 24);
684684
assert_size!(ArchivedSwitchStmt, 20);
685685
assert_size!(ArchivedThrowStmt, 12);
686-
assert_size!(ArchivedTryStmt, 124);
686+
assert_size!(ArchivedTryStmt, 128);
687687
assert_size!(ArchivedVarDeclOrExpr, 8);
688688
assert_size!(ArchivedWhileStmt, 16);
689689
assert_size!(ArchivedWithStmt, 16);
@@ -698,69 +698,69 @@ mod rkyv_layout_assert {
698698
assert_size!(ArchivedTsConstAssertion, 12);
699699
assert_size!(ArchivedTsConstructSignatureDecl, 32);
700700
assert_size!(ArchivedTsConstructorType, 32);
701-
assert_size!(ArchivedTsEntityName, 28);
702-
assert_size!(ArchivedTsEnumDecl, 44);
701+
assert_size!(ArchivedTsEntityName, 32);
702+
assert_size!(ArchivedTsEnumDecl, 48);
703703
assert_size!(ArchivedTsEnumMember, 48);
704704
assert_size!(ArchivedTsEnumMemberId, 32);
705705
assert_size!(ArchivedTsExportAssignment, 12);
706706
assert_size!(ArchivedTsExprWithTypeArgs, 20);
707707
assert_size!(ArchivedTsExternalModuleRef, 36);
708708
assert_size!(ArchivedTsFnOrConstructorType, 36);
709-
assert_size!(ArchivedTsFnParam, 36);
709+
assert_size!(ArchivedTsFnParam, 40);
710710
assert_size!(ArchivedTsFnType, 28);
711711
assert_size!(ArchivedTsGetterSignature, 24);
712-
assert_size!(ArchivedTsImportEqualsDecl, 76);
713-
assert_size!(ArchivedTsImportType, 92);
712+
assert_size!(ArchivedTsImportEqualsDecl, 80);
713+
assert_size!(ArchivedTsImportType, 96);
714714
assert_size!(ArchivedTsIndexSignature, 28);
715715
assert_size!(ArchivedTsIndexedAccessType, 20);
716-
assert_size!(ArchivedTsInferType, 60);
716+
assert_size!(ArchivedTsInferType, 64);
717717
assert_size!(ArchivedTsInstantiation, 16);
718718
assert_size!(ArchivedTsInterfaceBody, 16);
719-
assert_size!(ArchivedTsInterfaceDecl, 68);
719+
assert_size!(ArchivedTsInterfaceDecl, 72);
720720
assert_size!(ArchivedTsIntersectionType, 16);
721721
assert_size!(ArchivedTsKeywordType, 12);
722722
assert_size!(ArchivedTsKeywordTypeKind, 1);
723723
assert_size!(ArchivedTsLit, 40);
724724
assert_size!(ArchivedTsLitType, 48);
725-
assert_size!(ArchivedTsMappedType, 84);
725+
assert_size!(ArchivedTsMappedType, 88);
726726
assert_size!(ArchivedTsMethodSignature, 40);
727727
assert_size!(ArchivedTsModuleBlock, 16);
728-
assert_size!(ArchivedTsModuleDecl, 92);
728+
assert_size!(ArchivedTsModuleDecl, 96);
729729
assert_size!(ArchivedTsModuleName, 32);
730730
assert_size!(ArchivedTsModuleRef, 40);
731-
assert_size!(ArchivedTsNamespaceBody, 44);
732-
assert_size!(ArchivedTsNamespaceDecl, 40);
733-
assert_size!(ArchivedTsNamespaceExportDecl, 32);
731+
assert_size!(ArchivedTsNamespaceBody, 48);
732+
assert_size!(ArchivedTsNamespaceDecl, 44);
733+
assert_size!(ArchivedTsNamespaceExportDecl, 36);
734734
assert_size!(ArchivedTsNonNullExpr, 12);
735735
assert_size!(ArchivedTsOptionalType, 12);
736-
assert_size!(ArchivedTsParamProp, 56);
737-
assert_size!(ArchivedTsParamPropParam, 36);
736+
assert_size!(ArchivedTsParamProp, 60);
737+
assert_size!(ArchivedTsParamPropParam, 40);
738738
assert_size!(ArchivedTsParenthesizedType, 12);
739739
assert_size!(ArchivedTsPropertySignature, 28);
740-
assert_size!(ArchivedTsQualifiedName, 52);
740+
assert_size!(ArchivedTsQualifiedName, 56);
741741
assert_size!(ArchivedTsRestType, 12);
742742
assert_size!(ArchivedTsSatisfiesExpr, 16);
743-
assert_size!(ArchivedTsSetterSignature, 52);
743+
assert_size!(ArchivedTsSetterSignature, 56);
744744
assert_size!(ArchivedTsThisType, 8);
745-
assert_size!(ArchivedTsThisTypeOrIdent, 28);
745+
assert_size!(ArchivedTsThisTypeOrIdent, 32);
746746
assert_size!(ArchivedTsTplLitType, 24);
747-
assert_size!(ArchivedTsTupleElement, 52);
747+
assert_size!(ArchivedTsTupleElement, 56);
748748
assert_size!(ArchivedTsTupleType, 16);
749749
assert_size!(ArchivedTsType, 120);
750-
assert_size!(ArchivedTsTypeAliasDecl, 48);
750+
assert_size!(ArchivedTsTypeAliasDecl, 52);
751751
assert_size!(ArchivedTsTypeAnn, 12);
752752
assert_size!(ArchivedTsTypeAssertion, 16);
753-
assert_size!(ArchivedTsTypeElement, 56);
753+
assert_size!(ArchivedTsTypeElement, 60);
754754
assert_size!(ArchivedTsTypeLit, 16);
755755
assert_size!(ArchivedTsTypeOperator, 16);
756756
assert_size!(ArchivedTsTypeOperatorOp, 1);
757-
assert_size!(ArchivedTsTypeParam, 52);
757+
assert_size!(ArchivedTsTypeParam, 56);
758758
assert_size!(ArchivedTsTypeParamDecl, 16);
759759
assert_size!(ArchivedTsTypeParamInstantiation, 16);
760-
assert_size!(ArchivedTsTypePredicate, 48);
761-
assert_size!(ArchivedTsTypeQuery, 112);
762-
assert_size!(ArchivedTsTypeQueryExpr, 96);
763-
assert_size!(ArchivedTsTypeRef, 44);
760+
assert_size!(ArchivedTsTypePredicate, 52);
761+
assert_size!(ArchivedTsTypeQuery, 116);
762+
assert_size!(ArchivedTsTypeQueryExpr, 100);
763+
assert_size!(ArchivedTsTypeRef, 48);
764764
assert_size!(ArchivedTsUnionOrIntersectionType, 20);
765765
assert_size!(ArchivedTsUnionType, 16);
766766
}

crates/swc_ecma_parser/tests/js/deferred-import-evaluation/attributes-declaration/input.js.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"end": 21
2626
},
2727
"ctxt": 0,
28+
"nodeId": 4294967295,
2829
"value": "ns",
2930
"optional": false
3031
}

crates/swc_ecma_parser/tests/js/deferred-import-evaluation/defer-as-default/input.js.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"end": 13
2626
},
2727
"ctxt": 0,
28+
"nodeId": 4294967295,
2829
"value": "defer",
2930
"optional": false
3031
}

crates/swc_ecma_parser/tests/js/deferred-import-evaluation/import-defer/input.js.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"end": 21
2626
},
2727
"ctxt": 0,
28+
"nodeId": 4294967295,
2829
"value": "ns",
2930
"optional": false
3031
}

0 commit comments

Comments
 (0)