<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/55143>55143</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang-tidy: bugprone-exception-escape: explicitly defined move constructor may not thhrow
        </td>
    </tr>

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

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

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

<pre>
    # to reproduce

Create `main.cpp` file with following contents
```cpp
class A{
public:
        A(A&&){
                throw 10;
        }

        A& operator=(A&&){
                throw 20;
                return *this;
        }
};

class B{
public:
        B(B&&)noexcept(false){
                throw 10;
        }

        B& operator=(B&&)noexcept(false){
                throw 20;
                return *this;
        }
};
```

Then run `clang-tidy` as follows:
```console
clang-tidy main.cpp --checks="bugprone-exception-escape" --
```

# Expected result

No warnings generated

# Actual result

Following warnings generated:
```console
ivan@igagis:~/prj/test$ clang-tidy main.cpp --checks="bugprone-exception-escape" --
4 warnings generated.
/home/ivan/prj/test/main.cpp:3:2: warning: an exception may be thrown in function 'A' which should not throw exceptions [bugprone-exception-escape]
        A(A&&){
        ^
/home/ivan/prj/test/main.cpp:7:5: warning: an exception may be thrown in function 'operator=' which should not throw exceptions [bugprone-exception-escape]
        A& operator=(A&&){
           ^
/home/ivan/prj/test/main.cpp:15:2: warning: an exception may be thrown in function 'B' which should not throw exceptions [bugprone-exception-escape]
        B(B&&)noexcept(false){
        ^
/home/ivan/prj/test/main.cpp:19:5: warning: an exception may be thrown in function 'operator=' which should not throw exceptions [bugprone-exception-escape]
        B& operator=(B&&)noexcept(false){
           ^
```

# version

```console
ivan@igagis:~/prj/test$ clang-tidy --version
LLVM (http://llvm.org/):
  LLVM version 11.0.1
  
  Optimized build.
  Default target: x86_64-pc-linux-gnu
  Host CPU: haswell
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNVkuTmzgQ_jX40oVLvPw4cLAz49pDNslhd68pIdqgRJYoSYw9-fXbYIPtrGc2M5NUhZJAqNWt_ro_GhWmfMyDOAFvwGJjTdkKDNhdwFbH-zuL3CMEM7bjUk9F09AQtlIh7KWvYWuUMnupKxBGe9TenbRn7Ng6jX5GKO4crIL5-vjetIWSIkhWw3bLVRAvqM_6thwXkoSar63ZQ8SC5GJ6fnfp69HEDEyDlntjg-Tu_y3G1xbZ0qJvrYYgXvlautvb0eA8fwa3fgbcmlxZj65ogweBjafJLVcOX4t3_V-8L9_kzSEYcn3p3F81arCt7qhD0dFV6GX52JGHuxNr3Dk-I1uMdkbhGNSTGgzkgzAUNYqvrscaF21FnNUYHoFKo0N0gjcENaalz7jXcf7-0KDwWBLzXav8pfiDgT23mnjtoELdxRfL7_VXwrdc3dDejB_FDSPPY5YPXAcpkxWvZB-f-X0Qbxr7he4eHeUyhZ8Ul_SGd9MB3aY2O1q96f25dmAzVoJklVCPqQ-muiHXMG5LDj5CgdATTYPUsG216CVBPKd95rCvpajB1aZVJWjjj2vPJhwE2fppQNmJkHC6nigigzjI7l8IcU49ezXEq2_zV4D9gXIH5-vl8KPsTSle_wLUP15K3wB7-Run_dVV_yYTniqPD2gdOXE1_TNqVhheWX7__p8_KWSL2vsu8KRDTamH3dTYqn9bjjUToF990ocomrJpNIiG50eK3U5-o7petFINJQ3gDrecCjV4biv0XT4Pi9nnWRo2IlRSt4ew0u2w-A_jPLz79He3rOZuj0p9F4JJmSflMlnyiZdeYX7xkyOdp5NJQjw0dDogrUcocSs1ubozD9gdoZy3raCs9vQ6MqWjyqS1Ku8i5MYQVXT8aoupMLtTvE6PkPb9Qv-1juPOtehokGVRmkzqfMsTXKbIsyLNMGKi4FG8SOaMF2y2SEUyUbxA5XJiI_0pNO6hN0Fj4uBE5jGLY5bG8yiLI5ZOo20WsWRW8DLdImOMSID0DanpkL6JzXuXKBqOhEo6785COjLJSiP225F93vra2PzIo0m_c957_i99Uidt">