<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJy9WVt32jgQ_jXkxYccMDRJH3gAEnbZpQkb6OkjR9hj0NaWvLKchP76nZF8x5Bkm20Pp4mlT3PRfHMx2Ur_MFoBRIkT8u_gcN1xrxPHkyLhPijwnZgp7cjA0XtwOlc9Bf-kXEGCv152ered3vh3hJlDhPB5EDgs0KCcNPaZ5mLnTEMmdhkYj9kPAe2SAy-xRB0aojhkGjqDqReyJHFuQfEn8B8h6LhTx65NWIKAO3uy6ziFOe5NseY4ifY7gzF-eLJREKCBwoPNE0quyBzcOUz4lVNC6trJhEX2ULGoIJJPsPGeUOhGN8WRlaehueVHaosjvhW2CZSMWrSWjrxJcx1eau-4nzPlnU8T_Ajp88Rjyu98usWPCb3GkCiHpVqiWAyit_Hls_BYguy4MaLcK_w4WxSG1wYvHsQ6C7A7qcTk3YHA407-79fHo6r914fFoYA07fj4CKHQLnntgxfqQwwmTEaEOX7kQxnEQKpnMqO0270hBfbjdK4nhQYFOlXC-QDBg1xo5_o2u53s2R3wAL0IuAAfD2w2HhWazYZskcrQp7r72_3Xqdl8peysJd3Oa8mxlvTwBEpvtET5-Ew_zS3k3uPCYFLa3T2jsShwM8Oy1gJXy4dMOd-GQAagKDLNHqfQT60fb8_2pkM1eY4hf927emwzbTcZsOY40vkdrn-Ay41M-hi_KwLfeAPFieImiLQQIsV_nhDvv5e38aDu__soYUvkz0f-3b69J-B1Cfmh_8qBzOWWUL_H8Q9LzvMF-BRFqwEbgMDZrFZpE61ST58w8gcoudGlbqTosctVAlcoXPxCHBJptAW1MfKoy5tDtfrpvHpPMgbFNBb_NQ2EeCX2oioUfVWLCW6rB--3-6ijnzO-AjztRk3aeZeq-VDWH_ytiPrZuEoBHxlWEve_R_Wkkv8a1BaBvzSmDf2vhrR4vSoeL81Q1MUJK2KaNgbjBvTAotAujT0PkuQLOhNwUA9BkABWjbHTdbP9kO_EmF7uHmIQE8W87xYwDp_ZIcHBn32vIpVih4dgZViWUkNH6D26VMFM8RLASzXOheMkwYUIhDbAyk47fsL1jEPoGzTqOAG7xTGX4c1zXCJkwIr-a6B3GLgY_Ht4DnFUNJBHvtvrCuSBQiesIrNQ2VsrxvHgbiqjwvSqMaF8xv_Gapea7QdxDy96gZragUs0NQK84eQhqFh-9thqj31mEkrvO4ofr9CYEHKojUwTPMUpe8G2OIkcHWiTfYdsfBtylgrP3HSLIWETPEdqYDpm93KMnwfJWPh3lXDlJxcs2vrsTUoWUsbnbS-oa5j9aPJvTe9FDbYWuAlgNsGXNNQUeUB-o-xjbhX4dVZ3mky8lxY64WKJqVRwpG5gtlsSo7lts2AqQylWMfPQFkJMpN5niNJmlMXU4SGrRI18rOIwtW0qjLVm3rEgzC96oWx6ZK4d_CP4GtSR4ooLBKSMNYVCqrngmrOQ_8iczVWig5UDc7HH10nN0JAFT_RpoI3PguPdYXjqqhGbRmLBI24E9N1evt5mzVz4GJ9v3MerRbRbYDUXqbmFE4g47vfNnfpk6kofwgYL7ZsxsfMOpy8bwQqZ7PZScoFOmLJDRGmCeMJwTJ7ZSl_fu4tifSDxhuP1Om9YADhbNqD2No-x1ZIy4y_3SMsEeQftFXAuvDD1wZYn2lpiIwD1VN-eYnrspOKGdPkM23UeYQcvdMh-FeJeYyvE7omdFS-ElLGw487MJDvDNsy6PzbUgXEKpzH3mt62nCk9YsfESVj42KKdkG8VkrGYlNEijqr1wSrq54ZRJOveN3PcYqiYlu61btta27q9XN7i0OFRp7IpRAH6nSX7KugxG02mIUsTaF5wG-WyVcVi7G15VTahaljxJ0BchDwZ6_UeCxpT-iFo9clW3on0D1aDYT1hVkhKRl0-x4ldynbGVqS_XfzCXkpVa0mqTdbZ3YJIDclzIXJuUiE8UyiKHmnBLemygCBr7Mtl4-K6mRl_pSiRol07OE0Tje9MdcSD8m1K0EjouvZdC3-h9zv8wQW1h_K5nArrS-Xjk8Q-wcPKGfsFnUusNrof868Pa9ZlrhYQrMLt2Vgn0lImPL_lb1zvMTWxRFH5MWDTP4uoLPLpKCuRK-rgNnvtvIY8n-PUJUhmnt4E-pqgxGanKE2inmXL0kLuuMfCe6lPIfJO-iccniV9X1jjpsFlVauYJU_0nAqWDLc946S4RgE_A6yzshDbqrjSwc4DsfeDyIdirWRYzk1H2EdMPKBvUX1sBDT8nBe9-idltt_jKN9M9pXNRpOzphq0iMm2jYl6j6W9VUiSzQEtw3K_CpuLMY1p7TLmNNb7hrGsvIITUKJrpgZpHfCXSmP5wgWP0qiiHdfYS2Mtl_Saa3Nx_hKzvmPKD9qcZAVozbbNov0Vifi4mDUE4CpiG126eHu78EcD__PgM7tgqcaEHf0h9xDe_ba8SFU42msdm5ZKXXK2wxxPt5ceffkzC8On_Ec3VvJv7EH4yJMkpW9eZ58GN27vYj-6GfauPLfnD7aD7c019Lb93nUQDP3-oD8YXHs3F6HpbSNbAgU8O0aErVkXP28BH7k9Fz_9Yb-POt3L4TDYDq-8LQSfh1dXQb8z7EGEtLokOZdS7S7UyIjcpjiUD3shJmxSbjJTGQCMwWih5jo0D3ZuoiqKL_A49iq-TTVkf8us_-ETXXSCDO47z0oiZw8XxvCRsfpfiCZpUw>53820</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Formatter] Attribute after `requires` is formatted wrongly
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          JohelEGP
      </td>
    </tr>
</table>

<pre>
    Seems like it's considered part of the `requires`.
Here's the diff after updating Clang.
```diff
 export template<class DerivedRef, class Base>
-  requires(
-    std::is_reference_v<DerivedRef> and
-    not std::is_same_v<std::remove_cvref_t<DerivedRef>, std::remove_cvref_t<Base>> and
-    std::derived_from<std::remove_reference_t<DerivedRef>, std::remove_reference_t<Base>>)
-[[nodiscard]] constexpr auto static_downcast(Base&& b) noexcept
+requires(std::is_reference_v<DerivedRef> and
+         not std::is_same_v<std::remove_cvref_t<DerivedRef>, std::remove_cvref_t<Base>> and
+         std::derived_from<std::remove_reference_t<DerivedRef>, std::remove_reference_t<Base>>) [
+        [nodiscard]] constexpr auto static_downcast(Base&& b) noexcept
   -> decltype(static_cast<DerivedRef>(std::forward<Base>(b))) {
   return static_cast<DerivedRef>(std::forward<Base>(b));
 }

 #if defined(__clang__) or not defined(__GNUC__)
 export template<class To> [[nodiscard]] constexpr To convert_to(To to) { return to; }
-export template<class To, class From>
-  requires(not std::convertible_to<const From&, To>)
-[[nodiscard]] constexpr To convert_to(const From& from) { return static_cast<To>(from); }
+export template<class To, class From> requires(not std::convertible_to<const From&, To>) [
+  [nodiscard]] constexpr To convert_to(const From& from) {
+  return static_cast<To>(from);
+}
 #else
-export template<class To, class From>
-  requires std::convertible_to<const From&, To>
-[[nodiscard]] constexpr const From& convert_to(const From& from) { return from; }
+export template<class To, class From> requires std::convertible_to<const From&, To> [
+  [nodiscard]] constexpr const From&
+convert_to(const From& from) {
+  return from;
+}
 export template<class To, class From> [[nodiscard]] constexpr To convert_to(const From& from) {
   return static_cast<To>(from);
 }
#endif

 struct [[nodiscard]] zero_t {
-  template<class T>
-    requires requires { number_zero_v<T>; }
-  [[nodiscard]] constexpr operator T() const { return number_zero_v<T>; }
+  template<class T> requires requires { number_zero_v<T>; } [
+    [nodiscard]] constexpr
+  operator T() const {
+    return number_zero_v<T>;
+  }
 };
 struct [[nodiscard]] one_t {
-  template<class T>
-    requires requires { number_one_v<T>; }
-  [[nodiscard]] constexpr operator T() const { return number_one_v<T>; }
+  template<class T> requires requires { number_one_v<T>; } [
+    [nodiscard]] constexpr
+  operator T() const {
+    return number_one_v<T>;
+  }
 };
```
`.clang-format`:
```yaml
AccessModifierOffset: -2
AlignAfterOpenBracket: AlwaysBreak
AlignArrayOfStructures: None
AlignConsecutiveAssignments: Consecutive
AlignConsecutiveBitFields: true
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands: Align
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Always
AllowShortCaseLabelsOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: AllIfsAndElse
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: No
BinPackArguments: true
BinPackParameters: true
BitFieldColonSpacing: Both
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeConceptDeclarations: Allowed
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeColon
BreakStringLiterals: true
ColumnLimit: 120
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 2
Cpp11BracedListStyle: true
DeriveLineEnding: false
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: Always
FixNamespaceComments: true
IncludeBlocks: Preserve
IncludeCategories:
  - Regex:      '<(experimental/)?[a-z_]+>' # C++ standard library
    Priority:   1
IndentAccessModifiers: false
IndentCaseBlocks: false
IndentCaseLabels: false
IndentPPDirectives: AfterHash
IndentRequiresClause: true
IndentWidth: 2
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
LambdaBodyIndentation: Signature
Language: Cpp
MaxEmptyLinesToKeep: 1
NamespaceIndentation: Inner
PackConstructorInitializers: NextLine
PointerAlignment: Left
PPIndentWidth: -1
QualifierAlignment: Custom
QualifierOrder: ["static", "inline", "constexpr", "const", "volatile", "type"]
ReferenceAlignment: Pointer
ReflowComments: true
RequiresClausePosition: WithPreceding
ShortNamespaceLines: 0
SortIncludes: CaseInsensitive
SortUsingDeclarations: true
SpaceAfterLogicalNot: true
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInConditionalStatement: false
SpacesInLineCommentPrefix:
  Minimum: 1
  Maximum: 1
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Latest
TabWidth: 2
UseCRLF: false
UseTab: Never
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9WVtz4jgW_jXkxUUKDEnIAw9Awgw7dGADXfNICfsYtG1LjCwnoX_9nCP5jiHJTLa7XA2WPp37TWQr_eNwBRDFTsh_gMN1y72LHU-KmPugwHcOTGlHBo7eg9O67Sj4K-EKYvx63eo8tDqj3xFmDhHC50HgsECDcpKDzzQXO2cSMrFLwXjMPgS0Sw68HSTy0BAdQqah1Zt4IYtj5wEUfwH_GYKWO3Hs2pjFCHi0J9uOk4vjDvI1x4m13-qN8OHxRkGAAgoPNi9IuUSz9-gw4ZdOCakrJ2MW2UP5ooJIvsDGe0GiG10nR1Keh2aSn7DNj_iW2CZQMmrgWijyIc5VeMG95d6nzFs3Y3yE9HnsMeW3bh7wMa7X6BLlsERLJItO9Da-fBUeizE6BoaUe4uPs0ViaDZ48-CgUwe745JPPu0IPO5k_369P8rcf71bHHJIXY6v9xASbZPWPnihPh7AuMmQMMdPdCicGEj1SmIUcrsDYmAfp3U3zjko0IkSzhcQ7mVEW3cPqXXSd7fHA9Qi4AJ8PLDZeFRoNhuSRSoTPuXd356-T8zmO2VnLck67yXHWtLLCyi90RLp4zt9Gitk2uNCb1zI3b7AMS9wUxNljQWukg8pc74NgQRAUiSaPU6un1g9Pp7tdYUq9BwT_FXtqr5NuQ1SYEVxDOdPqP4FKtcy6Wv0LhH8oAXyE7klKGghxBD_9wHxebt8LA6q-n8uJGyJ_Pee_7Run3F4lUJ26J_GQKpyg6s_o_iXJeflAnwuRMsO64HA2axSaWOtEk-fEfInKLnRBW8M0VOVywFcCuH8C8WQSKItqI2hR13eHKrUT-ddO8kDKKax-K9pIESTWEOVQvRdLsa5jRp8Xu6Tjn5J-BLwvBoVapdVKudDUX_wW-71i36VAr7SrUTu_-7Vs0z-qVMbCP5Sn9b4v-vS_HqVv16boaiNE1bENG30RjXokUWhXRp5HsTxN1Qm4KAWQRADVo2R03bT_ZDvxIgud4sDiLFi3g8LGIWv7Bjj4M9-lJFKseMiWJkoS6ihI_QJVSphJmgE8BKNc-EojnEhAqENsLTTjB9zPeUQ-gaNPM7AHnDMZWh5jkuEDFjefw30ER13AP8JXkMcFQ3kme_2ugRZkOuEZWQWSntrxTge3E1klIteFiaUr_jfSO0Ss70QT_Cm58ipGbhEUSNAC8eLoCT5xWOrPfaZcSi9H0h-tEJhQsig1jN18ASn7Dnb4iRycqCJ9iNG48eQ00R4xtINgoR18AxDA9MxtcspfhbEI-E_ltyVnZyzaOuzDzGZS3m4LHseuiayn03-releVIvWHDcGzCb4loSaPA8Y30j7NLZy_DqtO_VIfJIWOuZiiamUx0hVwHS3CIz6ts2CiQylWB2Yh7IQYiz1PkUUMiMtpo6LtBLV8rGMw9S2qTDSmnmnhDC_6EJZ18iYHfwT-BrUCeOSCgSkjDWFQqqZ4JqzkP9Mlc1YooKlAzOxx-ukZijInMf6PND6Z87RduieKmvEJpGY84gbAl23k603STMTPvrnT-6jaRHt5ljNRWKscAZxOHS7xqY-ibrSx7AWhfZmTNH5iNOX9WApmOz2UnKBSpiyQ4FSB_GY4Zg8tZW-uvcYHfSRyJsYr9Z5EwWAs2UNaq15ii2XlCl_e8KwjDHuoLkCzoQXJj7Y8kRbS2wEoF6q2xNMj51U3ARdNsO2nWfYwRsdsj-FuHfYCrF7YmdFgxAzFrbcqZlkp9iGWfvnhjowTuE05t7RbcuZ0Ct2TJyEhY8t2gn5VmEw5pMySsSRtT5aRt1MMPJkVft6jlsMFdNCvcZtW2sbt5fLBxw6POpUNoXIQb-zeF8GPaejySRkSQx1AzeFXLqq2AF7W1aVjatqUvwBcMhdHo_0eo8FjSm9CBp1spV3LP2j5WCinjArDEpGXT7DiV3CdkZWDH-7-I29FazWklibrLO7eSDVKM-EyGKTCuGFQpH3SAtuSJc5BGljXy5rhmunYvw3QYrk7crBSRJrvDNVEQvl25SgkdB17V0Lv9D9Dj-4oPZQvBdTYXWpeH2R2Cd4WDpjf6BzKaoN7-fs58OKdKmqOQSrcHM2VgNpKWOeWflPrveYmliiqPwYsOmfuVfm2XSUlsgVdXCbvXZewzif4dQliGaW3gT6HiPFeqcoRKKeZcvSXO64x8Inqc8hsk76BxxfJf1eWIlNg0urVj5Lnuk5JSwJbnvGWXK1An4BWI3KnGwj41IHuwzE3g8iG4q1kmExN51gnzHxgH5F9bER0PBzmfTqr4TZfo-jfD3ZVzYbTc6aatBAJt02Iuo9lvZGInE6BzQMy90ybCZGNKY105jRWO-biGWFCc5AKVxTNhjWAX8rNZZvXPAoiUrccY291dYySu-pNhOXjZj2HVN-UOY4LUBrtq0X7e8YiM_zaY0AriK21qXz29uVP-z59717dqW5DmGIpchOAFQP8CqKA5zi20RD-le56p_wHB47QQr3nVcl0frHq0SFw73WB9OMqb9Od1gdku21Rz8bTcPwJftoH5T8H3YvfOVxnNBvttOb3sDtXO2Hg4Hb3Qa3_qDbv--7PQgGnuszf-B1bvruzZ13FZquOLTFU8CrY0jYanfFh27Hxafb73a7va573e8H2_6tt4Xgvn97G3Rb_Q5EGE7XJMe1VLsrNTQibRMcxvudEBM1LjaZqQhgDET0WaKxvA3_I_cQPv62vDK8h0b2vwH5tFQo">