@@ -6189,22 +6189,24 @@ class TypeJoinExpr final : public Expr,
6189
6189
class MacroExpansionExpr final : public Expr {
6190
6190
private:
6191
6191
DeclContext *DC;
6192
- SourceLoc SigilLoc;
6193
- DeclNameRef MacroName;
6194
- DeclNameLoc MacroNameLoc;
6195
- SourceLoc LeftAngleLoc, RightAngleLoc;
6196
- ArrayRef<TypeRepr *> GenericArgs;
6197
- ArgumentList *ArgList;
6192
+ MacroExpansionInfo *info;
6198
6193
Expr *Rewritten;
6199
6194
MacroRoles Roles;
6200
6195
MacroExpansionDecl *SubstituteDecl;
6201
6196
6202
- // / The referenced macro.
6203
- ConcreteDeclRef macroRef;
6204
-
6205
6197
public:
6206
6198
enum : unsigned { InvalidDiscriminator = 0xFFFF };
6207
6199
6200
+ explicit MacroExpansionExpr (DeclContext *dc, MacroExpansionInfo *info,
6201
+ MacroRoles roles,
6202
+ bool isImplicit = false ,
6203
+ Type ty = Type())
6204
+ : Expr(ExprKind::MacroExpansion, isImplicit, ty),
6205
+ DC(dc), info(info), Rewritten(nullptr ), Roles(roles),
6206
+ SubstituteDecl(nullptr ) {
6207
+ Bits.MacroExpansionExpr .Discriminator = InvalidDiscriminator;
6208
+ }
6209
+
6208
6210
explicit MacroExpansionExpr (DeclContext *dc,
6209
6211
SourceLoc sigilLoc, DeclNameRef macroName,
6210
6212
DeclNameLoc macroNameLoc,
@@ -6214,45 +6216,29 @@ class MacroExpansionExpr final : public Expr {
6214
6216
ArgumentList *argList,
6215
6217
MacroRoles roles,
6216
6218
bool isImplicit = false ,
6217
- Type ty = Type())
6218
- : Expr(ExprKind::MacroExpansion, isImplicit, ty),
6219
- DC(dc), SigilLoc(sigilLoc),
6220
- MacroName(macroName), MacroNameLoc(macroNameLoc),
6221
- LeftAngleLoc(leftAngleLoc), RightAngleLoc(rightAngleLoc),
6222
- GenericArgs(genericArgs),
6223
- Rewritten(nullptr ), Roles(roles), SubstituteDecl(nullptr ) {
6224
- Bits.MacroExpansionExpr .Discriminator = InvalidDiscriminator;
6219
+ Type ty = Type());
6225
6220
6226
- // Macro expansions always have an argument list. If one is not provided, create
6227
- // an implicit one.
6228
- if (argList) {
6229
- ArgList = argList;
6230
- } else {
6231
- ArgList = ArgumentList::createImplicit (dc->getASTContext (), {});
6232
- }
6233
- }
6234
-
6235
- DeclNameRef getMacroName () const { return MacroName; }
6236
- DeclNameLoc getMacroNameLoc () const { return MacroNameLoc; }
6221
+ DeclNameRef getMacroName () const { return info->MacroName ; }
6222
+ DeclNameLoc getMacroNameLoc () const { return info->MacroNameLoc ; }
6237
6223
6238
6224
Expr *getRewritten () const { return Rewritten; }
6239
6225
void setRewritten (Expr *rewritten) { Rewritten = rewritten; }
6240
6226
6241
- ArrayRef<TypeRepr *> getGenericArgs () const { return GenericArgs; }
6227
+ ArrayRef<TypeRepr *> getGenericArgs () const { return info-> GenericArgs ; }
6242
6228
6243
6229
SourceRange getGenericArgsRange () const {
6244
- return SourceRange (LeftAngleLoc, RightAngleLoc);
6230
+ return SourceRange (info-> LeftAngleLoc , info-> RightAngleLoc );
6245
6231
}
6246
6232
6247
- ArgumentList *getArgs () const { return ArgList; }
6248
- void setArgs (ArgumentList *newArgs) { ArgList = newArgs; }
6233
+ ArgumentList *getArgs () const { return info-> ArgList ; }
6234
+ void setArgs (ArgumentList *newArgs) { info-> ArgList = newArgs; }
6249
6235
6250
6236
MacroRoles getMacroRoles () const { return Roles; }
6251
6237
6252
- SourceLoc getLoc () const { return SigilLoc; }
6238
+ SourceLoc getLoc () const { return info-> SigilLoc ; }
6253
6239
6254
- ConcreteDeclRef getMacroRef () const { return macroRef; }
6255
- void setMacroRef (ConcreteDeclRef ref) { macroRef = ref; }
6240
+ ConcreteDeclRef getMacroRef () const { return info-> macroRef ; }
6241
+ void setMacroRef (ConcreteDeclRef ref) { info-> macroRef = ref; }
6256
6242
6257
6243
DeclContext *getDeclContext () const { return DC; }
6258
6244
void setDeclContext (DeclContext *dc) { DC = dc; }
@@ -6275,11 +6261,12 @@ class MacroExpansionExpr final : public Expr {
6275
6261
Bits.MacroExpansionExpr .Discriminator = discriminator;
6276
6262
}
6277
6263
6264
+ MacroExpansionInfo *getExpansionInfo () const { return info; }
6265
+
6278
6266
SourceRange getSourceRange () const ;
6279
6267
6280
- MacroExpansionDecl *createSubstituteDecl () const ;
6268
+ MacroExpansionDecl *createSubstituteDecl ();
6281
6269
MacroExpansionDecl *getSubstituteDecl () const ;
6282
- void setSubstituteDecl (MacroExpansionDecl *decl);
6283
6270
6284
6271
static bool classof (const Expr *E) {
6285
6272
return E->getKind () == ExprKind::MacroExpansion;
0 commit comments