@@ -360,6 +360,14 @@ class alignas(8) Expr {
360
360
< (1 << NumCheckedCastKindBits),
361
361
" unable to fit a CheckedCastKind in the given number of bits" );
362
362
363
+ class FunctionConversionExprBitfields {
364
+ friend class FunctionConversionExpr ;
365
+ unsigned : NumImplicitConversionExprBits;
366
+ unsigned Flattening : 1 ;
367
+ };
368
+ enum { NumFunctionConversionExprBits = NumImplicitConversionExprBits + 1 };
369
+ static_assert (NumFunctionConversionExprBits <= 32 , " fits in an unsigned" );
370
+
363
371
class CollectionUpcastConversionExprBitfields {
364
372
friend class CollectionUpcastConversionExpr ;
365
373
unsigned : NumExprBits;
@@ -413,6 +421,7 @@ class alignas(8) Expr {
413
421
ApplyExprBitfields ApplyExprBits;
414
422
CallExprBitfields CallExprBits;
415
423
CheckedCastExprBitfields CheckedCastExprBits;
424
+ FunctionConversionExprBitfields FunctionConversionExprBits;
416
425
CollectionUpcastConversionExprBitfields CollectionUpcastConversionExprBits;
417
426
TupleShuffleExprBitfields TupleShuffleExprBits;
418
427
ObjCSelectorExprBitfields ObjCSelectorExprBits;
@@ -2761,8 +2770,22 @@ class UnresolvedTypeConversionExpr : public ImplicitConversionExpr {
2761
2770
class FunctionConversionExpr : public ImplicitConversionExpr {
2762
2771
public:
2763
2772
FunctionConversionExpr (Expr *subExpr, Type type)
2764
- : ImplicitConversionExpr(ExprKind::FunctionConversion, subExpr, type) {}
2765
-
2773
+ : ImplicitConversionExpr(ExprKind::FunctionConversion, subExpr, type) {
2774
+ FunctionConversionExprBits.Flattening = false ;
2775
+ }
2776
+
2777
+ // / Set whether this function conversion flattens an unapplied member
2778
+ // / function.
2779
+ void setFlattening () {
2780
+ FunctionConversionExprBits.Flattening = true ;
2781
+ }
2782
+
2783
+ // / Returns whether this function conversion flattens an unapplied member
2784
+ // / function.
2785
+ bool isFlattening () const {
2786
+ return FunctionConversionExprBits.Flattening ;
2787
+ }
2788
+
2766
2789
static bool classof (const Expr *E) {
2767
2790
return E->getKind () == ExprKind::FunctionConversion;
2768
2791
}
0 commit comments