@@ -727,6 +727,11 @@ class TagInfo : public CommonTypeInfo {
727727 LLVM_PREFERRED_TYPE (bool )
728728 unsigned SwiftCopyable : 1 ;
729729
730+ LLVM_PREFERRED_TYPE (bool )
731+ unsigned SwiftEscapableSpecified : 1 ;
732+ LLVM_PREFERRED_TYPE (bool )
733+ unsigned SwiftEscapable : 1 ;
734+
730735public:
731736 std::optional<std::string> SwiftImportAs;
732737 std::optional<std::string> SwiftRetainOp;
@@ -739,7 +744,8 @@ class TagInfo : public CommonTypeInfo {
739744
740745 TagInfo ()
741746 : HasFlagEnum(0 ), IsFlagEnum(0 ), SwiftCopyableSpecified(false ),
742- SwiftCopyable (false ) {}
747+ SwiftCopyable (false ), SwiftEscapableSpecified(false ),
748+ SwiftEscapable(false ) {}
743749
744750 std::optional<bool > isFlagEnum () const {
745751 if (HasFlagEnum)
@@ -760,6 +766,16 @@ class TagInfo : public CommonTypeInfo {
760766 SwiftCopyable = Value.value_or (false );
761767 }
762768
769+ std::optional<bool > isSwiftEscapable () const {
770+ return SwiftEscapableSpecified ? std::optional<bool >(SwiftEscapable)
771+ : std::nullopt ;
772+ }
773+
774+ void setSwiftEscapable (std::optional<bool > Value) {
775+ SwiftEscapableSpecified = Value.has_value ();
776+ SwiftEscapable = Value.value_or (false );
777+ }
778+
763779 TagInfo &operator |=(const TagInfo &RHS) {
764780 static_cast <CommonTypeInfo &>(*this ) |= RHS;
765781
@@ -782,6 +798,9 @@ class TagInfo : public CommonTypeInfo {
782798 if (!SwiftCopyableSpecified)
783799 setSwiftCopyable (RHS.isSwiftCopyable ());
784800
801+ if (!SwiftEscapableSpecified)
802+ setSwiftEscapable (RHS.isSwiftEscapable ());
803+
785804 return *this ;
786805 }
787806
@@ -798,6 +817,7 @@ inline bool operator==(const TagInfo &LHS, const TagInfo &RHS) {
798817 LHS.SwiftConformance == RHS.SwiftConformance &&
799818 LHS.isFlagEnum () == RHS.isFlagEnum () &&
800819 LHS.isSwiftCopyable () == RHS.isSwiftCopyable () &&
820+ LHS.isSwiftEscapable () == RHS.isSwiftEscapable () &&
801821 LHS.EnumExtensibility == RHS.EnumExtensibility ;
802822}
803823
0 commit comments