@@ -3,7 +3,11 @@ mod dep;
33use std:: mem;
44
55use dep:: { FoldableDep , UnFoldableDep } ;
6- use oxc:: { allocator, ast:: ast:: Expression , span:: GetSpan } ;
6+ use oxc:: {
7+ allocator,
8+ ast:: { ast:: Expression , match_member_expression} ,
9+ span:: GetSpan ,
10+ } ;
711use rustc_hash:: FxHashMap ;
812
913use crate :: {
@@ -112,3 +116,53 @@ impl<'a> Transformer<'a> {
112116 if let FoldingData :: Foldable { literal, .. } = data { Some ( * literal) } else { None }
113117 }
114118}
119+
120+ pub fn maybe_foldable_expr ( node : & Expression ) -> bool {
121+ match node {
122+ match_member_expression ! ( Expression ) => true ,
123+
124+ Expression :: StringLiteral ( _)
125+ | Expression :: NumericLiteral ( _)
126+ | Expression :: BigIntLiteral ( _)
127+ | Expression :: BooleanLiteral ( _)
128+ | Expression :: NullLiteral ( _)
129+ | Expression :: RegExpLiteral ( _)
130+ | Expression :: TemplateLiteral ( _) => false ,
131+
132+ Expression :: FunctionExpression ( _)
133+ | Expression :: ArrowFunctionExpression ( _)
134+ | Expression :: ObjectExpression ( _)
135+ | Expression :: ParenthesizedExpression ( _)
136+ | Expression :: SequenceExpression ( _)
137+ | Expression :: ImportExpression ( _)
138+ | Expression :: NewExpression ( _)
139+ | Expression :: ClassExpression ( _) => false ,
140+
141+ Expression :: Identifier ( _)
142+ | Expression :: UnaryExpression ( _)
143+ | Expression :: UpdateExpression ( _)
144+ | Expression :: BinaryExpression ( _)
145+ | Expression :: LogicalExpression ( _)
146+ | Expression :: ConditionalExpression ( _)
147+ | Expression :: CallExpression ( _)
148+ | Expression :: TaggedTemplateExpression ( _)
149+ | Expression :: AwaitExpression ( _)
150+ | Expression :: YieldExpression ( _)
151+ | Expression :: ArrayExpression ( _)
152+ | Expression :: AssignmentExpression ( _)
153+ | Expression :: ChainExpression ( _)
154+ | Expression :: MetaProperty ( _)
155+ | Expression :: PrivateInExpression ( _)
156+ | Expression :: ThisExpression ( _)
157+ | Expression :: Super ( _) => true ,
158+
159+ Expression :: JSXElement ( _) | Expression :: JSXFragment ( _) => true ,
160+
161+ Expression :: V8IntrinsicExpression ( _)
162+ | Expression :: TSAsExpression ( _)
163+ | Expression :: TSInstantiationExpression ( _)
164+ | Expression :: TSTypeAssertion ( _)
165+ | Expression :: TSNonNullExpression ( _)
166+ | Expression :: TSSatisfiesExpression ( _) => unreachable ! ( ) ,
167+ }
168+ }
0 commit comments