diff --git a/.clang-format b/.clang-format index 4e23f1d3a..8f0a58836 100644 --- a/.clang-format +++ b/.clang-format @@ -4,15 +4,36 @@ Language: Cpp AccessModifierOffset: -1 AlignAfterOpenBracket: Align AlignArrayOfStructures: None -AlignConsecutiveMacros: None -AlignConsecutiveAssignments: None -AlignConsecutiveBitFields: None -AlignConsecutiveDeclarations: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false AlignEscapedNewlines: Left AlignOperands: Align -AlignTrailingComments: true +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 AllowAllArgumentsOnNextLine: true -AllowAllConstructorInitializersOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: Never AllowShortCaseLabelsOnASingleLine: false @@ -25,6 +46,8 @@ AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: true AlwaysBreakTemplateDeclarations: Yes +# AttributeMacros: +# - __capability BinPackArguments: true BinPackParameters: true BitFieldColonSpacing: Both @@ -33,12 +56,12 @@ BraceWrapping: AfterClass: false AfterControlStatement: Never AfterEnum: false + AfterExternBlock: false AfterFunction: false AfterNamespace: false AfterObjCDeclaration: false AfterStruct: false AfterUnion: false - AfterExternBlock: false BeforeCatch: false BeforeElse: false BeforeLambdaBody: false @@ -47,24 +70,23 @@ BraceWrapping: SplitEmptyFunction: true SplitEmptyRecord: true SplitEmptyNamespace: true +BreakAfterAttributes: Never +# BreakAfterJavaFieldAnnotations: false +BreakArrays: true BreakBeforeBinaryOperators: None BreakBeforeBraces: Attach -BreakBeforeConceptDeclarations: true -BreakBeforeInheritanceComma: true # false -BreakInheritanceList: BeforeComma # BeforeColon +BreakBeforeConceptDeclarations: Always +BreakBeforeInlineASMColon: OnlyMultiline BreakBeforeTernaryOperators: true -BreakConstructorInitializersBeforeComma: true # false BreakConstructorInitializers: BeforeComma # BeforeColon -# BreakAfterJavaFieldAnnotations: false +BreakInheritanceList: BeforeComma # BeforeColon BreakStringLiterals: true ColumnLimit: 120 # 80 CommentPragmas: '^ IWYU pragma:' CompactNamespaces: false -ConstructorInitializerAllOnOneLineOrOnePerLine: true ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: true -DeriveLineEnding: true DerivePointerAlignment: true DisableFormat: false EmptyLineAfterAccessModifier: Never @@ -83,14 +105,21 @@ IndentCaseLabels: true IndentExternBlock: AfterExternBlock IndentGotoLabels: true IndentPPDirectives: None -IndentRequires: false +IndentRequiresClause: true IndentWidth: 2 IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false # InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + Decimal: 0 + Hex: 0 # JavaScriptQuotes: Leave # JavaScriptWrapImports: true KeepEmptyLinesAtTheStartOfBlocks: false LambdaBodyIndentation: Signature +LineEnding: DeriveLF MacroBlockBegin: '' MacroBlockEnd: '' MaxEmptyLinesToKeep: 1 @@ -100,23 +129,31 @@ NamespaceIndentation: None # ObjCBreakBeforeNestedBlockParam: true # ObjCSpaceAfterProperty: false # ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: NextLine PenaltyBreakAssignment: 2 PenaltyBreakBeforeFirstCallParameter: 1 PenaltyBreakComment: 300 PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 PenaltyBreakString: 1000 PenaltyBreakTemplateDeclaration: 10 PenaltyExcessCharacter: 1000000 PenaltyIndentedWhitespace: 0 PenaltyReturnTypeOnItsOwnLine: 200 -PointerAlignment: Right +PointerAlignment: Right # Left PPIndentWidth: -1 +QualifierAlignment: Leave ReferenceAlignment: Pointer ReflowComments: false # true +RemoveBracesLLVM: false +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave ShortNamespaceLines: 0 # 1 SortIncludes: CaseInsensitive # CaseSensitive # SortJavaStaticImport: Before -SortUsingDeclarations: false # true +SortUsingDeclarations: Lexicographic # LexicographicNumeric SpaceAfterCStyleCast: false SpaceAfterLogicalNot: false SpaceAfterTemplateKeyword: true @@ -127,6 +164,16 @@ SpaceBeforeCpp11BracedList: false SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false SpaceBeforeRangeBasedForLoopColon: true SpaceBeforeSquareBrackets: false SpaceInEmptyBlock: false @@ -143,6 +190,5 @@ SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Auto TabWidth: 100 # 8 -UseCRLF: false UseTab: Never ... diff --git a/td/telegram/AutosaveManager.cpp b/td/telegram/AutosaveManager.cpp index e04f067d8..4e50505b6 100644 --- a/td/telegram/AutosaveManager.cpp +++ b/td/telegram/AutosaveManager.cpp @@ -277,11 +277,9 @@ void AutosaveManager::load_autosave_settings(Promiseparameters().use_message_db) { G()->td_db()->get_sqlite_pmc()->get( - get_autosave_settings_database_key(), - PromiseCreator::lambda( - [actor_id = actor_id(this)](string value) mutable { - send_closure(actor_id, &AutosaveManager::on_load_autosave_settings_from_database, std::move(value)); - })); + get_autosave_settings_database_key(), PromiseCreator::lambda([actor_id = actor_id(this)](string value) mutable { + send_closure(actor_id, &AutosaveManager::on_load_autosave_settings_from_database, std::move(value)); + })); return; } diff --git a/td/telegram/StickersManager.cpp b/td/telegram/StickersManager.cpp index d776dc0b4..223a0877f 100644 --- a/td/telegram/StickersManager.cpp +++ b/td/telegram/StickersManager.cpp @@ -1621,8 +1621,7 @@ void StickersManager::init() { load_special_sticker_set_info_from_binlog(sticker_set); } - dice_emojis_str_ = - td_->option_manager_->get_option_string("dice_emojis", "🎲\x01🎯\x01🏀\x01⚽\x01⚽️\x01🎰\x01🎳"); + dice_emojis_str_ = td_->option_manager_->get_option_string("dice_emojis", "🎲\x01🎯\x01🏀\x01⚽\x01⚽️\x01🎰\x01🎳"); dice_emojis_ = full_split(dice_emojis_str_, '\x01'); for (auto &dice_emoji : dice_emojis_) { auto &animated_dice_sticker_set = add_special_sticker_set(SpecialStickerSetType::animated_dice(dice_emoji)); diff --git a/tdutils/td/utils/as.h b/tdutils/td/utils/as.h index de68caced..1cda9a3d0 100644 --- a/tdutils/td/utils/as.h +++ b/tdutils/td/utils/as.h @@ -24,7 +24,7 @@ class As { As(const As &new_value) = delete; As &operator=(const As &) = delete; As(As &&) = default; - As &operator=(As &&new_value) &&noexcept { + As &operator=(As &&new_value) && noexcept { std::memcpy(ptr_, new_value.ptr_, sizeof(T)); return *this; } diff --git a/tdutils/td/utils/type_traits.h b/tdutils/td/utils/type_traits.h index 2c32beeb8..69c08bfe8 100644 --- a/tdutils/td/utils/type_traits.h +++ b/tdutils/td/utils/type_traits.h @@ -34,7 +34,7 @@ constexpr size_t member_function_argument_count() { // there is no std::is_trivially_copyable in libstdc++ before 5.0 #if __GLIBCXX__ -#if TD_CLANG || (TD_GCC && __GNUC__ >= 5) // but clang >= 3.0 and g++ >= 5.0 supports __is_trivially_copyable +#if TD_CLANG || (TD_GCC && __GNUC__ >= 5) // but clang >= 3.0 and g++ >= 5.0 supports __is_trivially_copyable #define TD_IS_TRIVIALLY_COPYABLE(T) __is_trivially_copyable(T) #else #define TD_IS_TRIVIALLY_COPYABLE(T) __has_trivial_copy(T) diff --git a/test/message_entities.cpp b/test/message_entities.cpp index 2196b6f66..ff9735392 100644 --- a/test/message_entities.cpp +++ b/test/message_entities.cpp @@ -1250,67 +1250,50 @@ TEST(MessageEntities, parse_html) { check_parse_html("🏟 🏟<aa", - "Unmatched end tag at byte offset 17, expected \"\", found \"\""); + check_parse_html("🏟 🏟<a", "Unmatched end tag at byte offset 17, expected \"\", found \"\""); check_parse_html("", "", {}); check_parse_html("➡️ ➡️", "➡️ ➡️", {}); check_parse_html("≥<>&"«»�", "≥<>&\"«»�", {}); check_parse_html("⩔", "⩔", {}); - check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", - {{td::MessageEntity::Type::Italic, 5, 5}}); - check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", - {{td::MessageEntity::Type::Italic, 5, 5}}); - check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", - {{td::MessageEntity::Type::Bold, 5, 5}}); - check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", - {{td::MessageEntity::Type::Bold, 5, 5}}); - check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", - {{td::MessageEntity::Type::Underline, 5, 5}}); - check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", - {{td::MessageEntity::Type::Underline, 5, 5}}); - check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", - {{td::MessageEntity::Type::Strikethrough, 5, 5}}); - check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", - {{td::MessageEntity::Type::Strikethrough, 5, 5}}); - check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", - {{td::MessageEntity::Type::Strikethrough, 5, 5}}); + check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Italic, 5, 5}}); + check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Italic, 5, 5}}); + check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Bold, 5, 5}}); + check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Bold, 5, 5}}); + check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Underline, 5, 5}}); + check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Underline, 5, 5}}); + check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Strikethrough, 5, 5}}); + check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Strikethrough, 5, 5}}); + check_parse_html("➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Strikethrough, 5, 5}}); check_parse_html("➡️ ➡️➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Italic, 5, 5}, {td::MessageEntity::Type::Bold, 10, 5}}); check_parse_html("🏟 🏟🏟 <🏟", "🏟 🏟🏟 <🏟", {{td::MessageEntity::Type::Italic, 5, 6}}); check_parse_html("🏟 🏟🏟 ><🏟", "🏟 🏟🏟 ><🏟", {{td::MessageEntity::Type::Italic, 5, 7}, {td::MessageEntity::Type::Bold, 9, 3}}); - check_parse_html("🏟 🏟<a", "🏟 🏟a", "🏟 🏟a", "🏟 🏟a", "🏟 🏟a", "🏟 🏟a", "🏟 🏟a", "🏟 🏟🏟 🏟<", "🏟 🏟<🏟 🏟<", - {{td::MessageEntity::Type::Italic, 6, 6}}); + check_parse_html("🏟 🏟<🏟 🏟<", "🏟 🏟<🏟 🏟<", {{td::MessageEntity::Type::Italic, 6, 6}}); check_parse_html("🏟 🏟<a", "🏟 🏟a", "🏟 🏟", "🏟 🏟<", {}); check_parse_html("\t", "\t", {{td::MessageEntity::Type::Italic, 0, 1}}); check_parse_html("\r", "\r", {{td::MessageEntity::Type::Italic, 0, 1}}); check_parse_html("\n", "\n", {{td::MessageEntity::Type::Italic, 0, 1}}); - check_parse_html("➡️ ➡️➡️ ➡️➡️ ➡️", - "➡️ ➡️➡️ ➡️➡️ ➡️", + check_parse_html("➡️ ➡️➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Spoiler, 5, 5}, {td::MessageEntity::Type::Bold, 10, 5}}); check_parse_html("🏟 🏟🏟 <🏟", "🏟 🏟🏟 <🏟", {{td::MessageEntity::Type::Spoiler, 5, 6}}); - check_parse_html("🏟 🏟🏟 ><🏟", - "🏟 🏟🏟 ><🏟", + check_parse_html("🏟 🏟🏟 ><🏟", "🏟 🏟🏟 ><🏟", {{td::MessageEntity::Type::Spoiler, 5, 7}, {td::MessageEntity::Type::Bold, 9, 3}}); - check_parse_html("➡️ ➡️➡️ ➡️➡️ ➡️", - "➡️ ➡️➡️ ➡️➡️ ➡️", + check_parse_html("➡️ ➡️➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Spoiler, 5, 5}, {td::MessageEntity::Type::Bold, 10, 5}}); - check_parse_html("🏟 🏟🏟 <🏟", "🏟 🏟🏟 <🏟", - {{td::MessageEntity::Type::Spoiler, 5, 6}}); + check_parse_html("🏟 🏟🏟 <🏟", "🏟 🏟🏟 <🏟", {{td::MessageEntity::Type::Spoiler, 5, 6}}); check_parse_html("🏟 🏟🏟 ><🏟", "🏟 🏟🏟 ><🏟", {{td::MessageEntity::Type::Spoiler, 5, 7}, {td::MessageEntity::Type::Bold, 9, 3}}); check_parse_html("\t", "\t", @@ -1344,10 +1327,8 @@ TEST(MessageEntities, parse_html) { {{td::MessageEntity::Type::TextUrl, 0, 12, "http://telegram.org/"}}); check_parse_html("https://telegram.org/asdsa?asdasdwe#12e3we", "https://telegram.org/asdsa?asdasdwe#12e3we", {{td::MessageEntity::Type::TextUrl, 0, 42, "https://telegram.org/asdsa?asdasdwe#12e3we"}}); - check_parse_html("🏟 🏟<
🏟 🏟<", "🏟 🏟<🏟 🏟<",
-                   {{td::MessageEntity::Type::Pre, 6, 6}});
-  check_parse_html("🏟 🏟<🏟 🏟<", "🏟 🏟<🏟 🏟<",
-                   {{td::MessageEntity::Type::Code, 6, 6}});
+  check_parse_html("🏟 🏟<
🏟 🏟<", "🏟 🏟<🏟 🏟<", {{td::MessageEntity::Type::Pre, 6, 6}});
+  check_parse_html("🏟 🏟<🏟 🏟<", "🏟 🏟<🏟 🏟<", {{td::MessageEntity::Type::Code, 6, 6}});
   check_parse_html("🏟 🏟<
🏟 🏟<", "🏟 🏟<🏟 🏟<",
                    {{td::MessageEntity::Type::Pre, 6, 6}, {td::MessageEntity::Type::Code, 6, 6}});
   check_parse_html("🏟 🏟<
🏟 🏟<", "🏟 🏟<🏟 🏟<",
@@ -1360,8 +1341,7 @@ TEST(MessageEntities, parse_html) {
                    {{td::MessageEntity::Type::Pre, 6, 7}, {td::MessageEntity::Type::Code, 6, 6}});
   check_parse_html("🏟 🏟<
 🏟 🏟<", "🏟 🏟< 🏟 🏟<",
                    {{td::MessageEntity::Type::Pre, 6, 7}, {td::MessageEntity::Type::Code, 7, 6}});
-  check_parse_html("➡️ ➡️➡️ ➡️➡️ ➡️",
-                   "➡️ ➡️➡️ ➡️➡️ ➡️",
+  check_parse_html("➡️ ➡️➡️ ➡️➡️ ➡️", "➡️ ➡️➡️ ➡️➡️ ➡️",
                    {{td::MessageEntity::Type::CustomEmoji, 5, 5, td::CustomEmojiId(static_cast(12345))},
                     {td::MessageEntity::Type::Bold, 10, 5}});
   check_parse_html("🏟 🏟🏟 <🏟", "🏟 🏟🏟 <🏟",
@@ -1444,8 +1424,7 @@ TEST(MessageEntities, parse_markdown) {
   check_parse_markdown("🏟 🏟_abac \\* asd _", "🏟 🏟abac * asd ", {{td::MessageEntity::Type::Italic, 5, 11}});
   check_parse_markdown("🏟 \\.🏟_🏟\\. 🏟_", "🏟 .🏟🏟. 🏟", {{td::MessageEntity::Type::Italic, 6, 6}});
   check_parse_markdown("\\\\\\a\\b\\c\\d\\e\\f\\1\\2\\3\\4\\➡️\\", "\\abcdef1234\\➡️\\", {});
-  check_parse_markdown("➡️ ➡️_➡️ ➡️_", "➡️ ➡️➡️ ➡️",
-                       {{td::MessageEntity::Type::Italic, 5, 5}});
+  check_parse_markdown("➡️ ➡️_➡️ ➡️_", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Italic, 5, 5}});
   check_parse_markdown("➡️ ➡️_➡️ ➡️_*➡️ ➡️*", "➡️ ➡️➡️ ➡️➡️ ➡️",
                        {{td::MessageEntity::Type::Italic, 5, 5}, {td::MessageEntity::Type::Bold, 10, 5}});
   check_parse_markdown("🏟 🏟_🏟 \\.🏟_", "🏟 🏟🏟 .🏟", {{td::MessageEntity::Type::Italic, 5, 6}});
@@ -1458,22 +1437,14 @@ TEST(MessageEntities, parse_markdown) {
   check_parse_markdown("🏟 🏟__🏟 _🏟_\\___", "🏟 🏟🏟 🏟_",
                        {{td::MessageEntity::Type::Underline, 5, 6}, {td::MessageEntity::Type::Italic, 8, 2}});
   check_parse_markdown("🏟 🏟`🏟 🏟```", "🏟 🏟🏟 🏟", {{td::MessageEntity::Type::Code, 5, 5}});
-  check_parse_markdown("🏟 🏟```🏟 🏟```", "🏟 🏟 🏟",
-                       {{td::MessageEntity::Type::PreCode, 5, 3, "🏟"}});
-  check_parse_markdown("🏟 🏟```🏟\n🏟```", "🏟 🏟🏟",
-                       {{td::MessageEntity::Type::PreCode, 5, 2, "🏟"}});
-  check_parse_markdown("🏟 🏟```🏟\r🏟```", "🏟 🏟🏟",
-                       {{td::MessageEntity::Type::PreCode, 5, 2, "🏟"}});
-  check_parse_markdown("🏟 🏟```🏟\n\r🏟```", "🏟 🏟🏟",
-                       {{td::MessageEntity::Type::PreCode, 5, 2, "🏟"}});
-  check_parse_markdown("🏟 🏟```🏟\r\n🏟```", "🏟 🏟🏟",
-                       {{td::MessageEntity::Type::PreCode, 5, 2, "🏟"}});
-  check_parse_markdown("🏟 🏟```🏟\n\n🏟```", "🏟 🏟\n🏟",
-                       {{td::MessageEntity::Type::PreCode, 5, 3, "🏟"}});
-  check_parse_markdown("🏟 🏟```🏟\r\r🏟```", "🏟 🏟\r🏟",
-                       {{td::MessageEntity::Type::PreCode, 5, 3, "🏟"}});
-  check_parse_markdown("🏟 🏟```🏟 \\\\\\`🏟```", "🏟 🏟 \\`🏟",
-                       {{td::MessageEntity::Type::PreCode, 5, 5, "🏟"}});
+  check_parse_markdown("🏟 🏟```🏟 🏟```", "🏟 🏟 🏟", {{td::MessageEntity::Type::PreCode, 5, 3, "🏟"}});
+  check_parse_markdown("🏟 🏟```🏟\n🏟```", "🏟 🏟🏟", {{td::MessageEntity::Type::PreCode, 5, 2, "🏟"}});
+  check_parse_markdown("🏟 🏟```🏟\r🏟```", "🏟 🏟🏟", {{td::MessageEntity::Type::PreCode, 5, 2, "🏟"}});
+  check_parse_markdown("🏟 🏟```🏟\n\r🏟```", "🏟 🏟🏟", {{td::MessageEntity::Type::PreCode, 5, 2, "🏟"}});
+  check_parse_markdown("🏟 🏟```🏟\r\n🏟```", "🏟 🏟🏟", {{td::MessageEntity::Type::PreCode, 5, 2, "🏟"}});
+  check_parse_markdown("🏟 🏟```🏟\n\n🏟```", "🏟 🏟\n🏟", {{td::MessageEntity::Type::PreCode, 5, 3, "🏟"}});
+  check_parse_markdown("🏟 🏟```🏟\r\r🏟```", "🏟 🏟\r🏟", {{td::MessageEntity::Type::PreCode, 5, 3, "🏟"}});
+  check_parse_markdown("🏟 🏟```🏟 \\\\\\`🏟```", "🏟 🏟 \\`🏟", {{td::MessageEntity::Type::PreCode, 5, 5, "🏟"}});
   check_parse_markdown("🏟 🏟**", "🏟 🏟", {});
   check_parse_markdown("||test||", "test", {{td::MessageEntity::Type::Spoiler, 0, 4}});
   check_parse_markdown("🏟 🏟``", "🏟 🏟", {});
@@ -1533,19 +1504,18 @@ TEST(MessageEntities, parse_markdown_v3) {
   check_parse_markdown_v3("🏟````🏟``🏟`aba🏟```c🏟`aba🏟 daba🏟```c🏟`aba🏟```🏟 `🏟``🏟```",
                           "🏟````🏟``🏟aba🏟```c🏟aba🏟 daba🏟c🏟`aba🏟🏟 `🏟``🏟```",
                           {{td::MessageEntity::Type::Code, 12, 11}, {td::MessageEntity::Type::Pre, 35, 9}});
-  check_parse_markdown_v3(
-      "🏟````🏟``🏟`aba🏟```c🏟`aba🏟 daba🏟```c🏟`aba🏟🏟```🏟 `🏟``🏟```",
-      {{td::MessageEntity::Type::Italic, 12, 1},
-       {td::MessageEntity::Type::Italic, 44, 1},
-       {td::MessageEntity::Type::Bold, 45, 1},
-       {td::MessageEntity::Type::Bold, 49, 2}},
-      "🏟````🏟``🏟`aba🏟c🏟`aba🏟 daba🏟c🏟`aba🏟🏟🏟 `🏟``🏟",
-      {{td::MessageEntity::Type::Italic, 12, 1},
-       {td::MessageEntity::Type::Pre, 18, 16},
-       {td::MessageEntity::Type::Italic, 38, 1},
-       {td::MessageEntity::Type::Bold, 39, 1},
-       {td::MessageEntity::Type::Bold, 43, 2},
-       {td::MessageEntity::Type::Pre, 45, 10}});
+  check_parse_markdown_v3("🏟````🏟``🏟`aba🏟```c🏟`aba🏟 daba🏟```c🏟`aba🏟🏟```🏟 `🏟``🏟```",
+                          {{td::MessageEntity::Type::Italic, 12, 1},
+                           {td::MessageEntity::Type::Italic, 44, 1},
+                           {td::MessageEntity::Type::Bold, 45, 1},
+                           {td::MessageEntity::Type::Bold, 49, 2}},
+                          "🏟````🏟``🏟`aba🏟c🏟`aba🏟 daba🏟c🏟`aba🏟🏟🏟 `🏟``🏟",
+                          {{td::MessageEntity::Type::Italic, 12, 1},
+                           {td::MessageEntity::Type::Pre, 18, 16},
+                           {td::MessageEntity::Type::Italic, 38, 1},
+                           {td::MessageEntity::Type::Bold, 39, 1},
+                           {td::MessageEntity::Type::Bold, 43, 2},
+                           {td::MessageEntity::Type::Pre, 45, 10}});
   check_parse_markdown_v3("` `", " ", {{td::MessageEntity::Type::Code, 0, 1}});
   check_parse_markdown_v3("`\n`", "\n", {{td::MessageEntity::Type::Code, 0, 1}});
   check_parse_markdown_v3("` `a", " a", {{td::MessageEntity::Type::Code, 0, 1}}, true);