@@ -724,6 +724,11 @@ class TagInfo : public CommonTypeInfo {
724724 LLVM_PREFERRED_TYPE (bool )
725725 unsigned SwiftCopyable : 1 ;
726726
727+ LLVM_PREFERRED_TYPE (bool )
728+ unsigned SwiftEscapableSpecified : 1 ;
729+ LLVM_PREFERRED_TYPE (bool )
730+ unsigned SwiftEscapable : 1 ;
731+
727732public:
728733 std::optional<std::string> SwiftImportAs;
729734 std::optional<std::string> SwiftRetainOp;
@@ -736,7 +741,8 @@ class TagInfo : public CommonTypeInfo {
736741
737742 TagInfo ()
738743 : HasFlagEnum(0 ), IsFlagEnum(0 ), SwiftCopyableSpecified(false ),
739- SwiftCopyable (false ) {}
744+ SwiftCopyable (false ), SwiftEscapableSpecified(false ),
745+ SwiftEscapable(false ) {}
740746
741747 std::optional<bool > isFlagEnum () const {
742748 if (HasFlagEnum)
@@ -757,6 +763,16 @@ class TagInfo : public CommonTypeInfo {
757763 SwiftCopyable = Value.value_or (false );
758764 }
759765
766+ std::optional<bool > isSwiftEscapable () const {
767+ return SwiftEscapableSpecified ? std::optional<bool >(SwiftEscapable)
768+ : std::nullopt ;
769+ }
770+
771+ void setSwiftEscapable (std::optional<bool > Value) {
772+ SwiftEscapableSpecified = Value.has_value ();
773+ SwiftEscapable = Value.value_or (false );
774+ }
775+
760776 TagInfo &operator |=(const TagInfo &RHS) {
761777 static_cast <CommonTypeInfo &>(*this ) |= RHS;
762778
@@ -779,6 +795,9 @@ class TagInfo : public CommonTypeInfo {
779795 if (!SwiftCopyableSpecified)
780796 setSwiftCopyable (RHS.isSwiftCopyable ());
781797
798+ if (!SwiftEscapableSpecified)
799+ setSwiftEscapable (RHS.isSwiftEscapable ());
800+
782801 return *this ;
783802 }
784803
@@ -795,6 +814,7 @@ inline bool operator==(const TagInfo &LHS, const TagInfo &RHS) {
795814 LHS.SwiftConformance == RHS.SwiftConformance &&
796815 LHS.isFlagEnum () == RHS.isFlagEnum () &&
797816 LHS.isSwiftCopyable () == RHS.isSwiftCopyable () &&
817+ LHS.isSwiftEscapable () == RHS.isSwiftEscapable () &&
798818 LHS.EnumExtensibility == RHS.EnumExtensibility ;
799819}
800820
0 commit comments