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

    <tr>
        <th>Summary</th>
        <td>
            Assertion failed: ExprToLoc.find(&CanonE) == ExprToLoc.end(), file F:/llvm/llvm/clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp, line 369
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    ```log
Assertion failed: ExprToLoc.find(&CanonE) == ExprToLoc.end(), file F:/llvm/llvm/clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp, line 369
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: clang-tidy src\\Document.cxx -- -m64 -std=c++20 -D_WIN64 -DNOMINMAX -DNDEBUG -DSTRICT_TYPED_ITEMIDS -DUNICODE -D_UNICODE -D_WIN32_WINNT=0x0600 -DWINVER=0x0600 -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -Iinclude -Isrc -Ilexlib -Wall -Wextra -Wshadow -Wimplicit-fallthrough -Wformat=2 -Wundef -Wcomma
1.      <eof> parser at end of file
2.      ASTMatcher: Processing 'bugprone-unchecked-optional-access' against:
        CXXMethodDecl Scintilla::Internal::Document::GetLastChild : <D:\notepad2\notepad2\scintilla\src\Document.cxx:543:1, line:565:1>
--- Bound Nodes Begin ---
    T - { EnumType : Scintilla::FoldLevel }
    fun - { CXXMethodDecl Scintilla::Internal::Document::GetLastChild : <D:\notepad2\notepad2\scintilla\src\Document.cxx:543:1, line:565:1> }
--- Bound Nodes End ---
```

clang-tidy built (with MSVC 2022 17.2.0) from today main 34b6f206cbab8471abf29739dab981bd8b868a65, configuration file is at
https://github.com/zufuliu/notepad2/blob/main/.clang-tidy

The source code for `Document::GetLastChild()` is available at 
https://github.com/zufuliu/notepad2/blob/main/scintilla/src/Document.cxx#L543

```cpp
Sci::Line Document::GetLastChild(Sci::Line lineParent, std::optional<FoldLevel> level, Sci::Line lastLine) {
        const FoldLevel levelStart = LevelNumberPart(level ? *level : GetFoldLevel(lineParent));
        const Sci::Line maxLine = LinesTotal();
        const Sci::Line lookLastLine = (lastLine != -1) ? std::min(LinesTotal() - 1, lastLine) : -1;
        Sci::Line lineMaxSubord = lineParent;
        while (lineMaxSubord < maxLine - 1) {
                EnsureStyledTo(LineStart(lineMaxSubord + 2));
                if (!IsSubordinate(levelStart, GetFoldLevel(lineMaxSubord + 1)))
                        break;
                if ((lookLastLine != -1) && (lineMaxSubord >= lookLastLine) && !LevelIsWhitespace(GetFoldLevel(lineMaxSubord)))
                        break;
                lineMaxSubord++;
        }
        if (lineMaxSubord > lineParent) {
                if (levelStart > LevelNumberPart(GetFoldLevel(lineMaxSubord + 1))) {
                        // Have chewed up some whitespace that belongs to a parent so seek back
                        if (LevelIsWhitespace(GetFoldLevel(lineMaxSubord))) {
                                lineMaxSubord--;
                        }
                }
        }
        return lineMaxSubord;
}
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVV1uP2jgU_jXhxQrKhVseeIAkdJGAjgba6T4hJ3GCdxwb2c4M01-_x0mAwEy7arUvRVZy7Bwff-duEpG9Ta2R0wwmCsuJLGc2U4pITQVHOaaMZJY_Q_HpKHdiJdJ-TnlmeRPLG4WYCx5bXoAsP4LRYSItT2B5IcpBCFqAFMtbMPZSXl8pw7wwU5rAc8Yxe1NUAblg4nVLuKKavhCYR1jjHNZi_kKl4CXhup8ej0Y6o5wgfxQ02B9W8WwbI1UlJdUIo6QqkCRHITXSAh20PqoGCIyC6kOV9FNR3gKzj1L8Q1INU6pURQwghHmGKE9ZlRGkDwSlEqsDSnD6rCVOSb85fqthAWVVeTSn1EtOH9W_BykKiUuEZVEZ_AYHqg1ga5q9ISVTaxjCiERaNQqeTsi2kV2OBshWGvwQpZY3h-E5yI72T8uN-RJtPq-Xm_XsmyGjeP7lExDb3eMy3O13fz_E0X65i9fLaAvLXzbL8HMUm90dEgT5nnludnCGc3JGjjkAFr7Gj92Vffi422_j8MtjvN983j_NHjfLzScjeL8NVx9-WZ6NZi9BQ3gycgJ3I_sJMwZPcgL7wVsdcCZegaDlkdGUajsHBn2QoioOsJwLWWINYDyYVDwjObzBdSVuzOy2Zrb8kIjc8mN0xBLiGGGNIBqRyOs4bJi9lnm23a2xTg9EGmeAh1KiFOUFsrwxRA7EASd2xYEhfSaZLY4mKzCzcWoYgQnhAlOu9MXbqP2F376tiT6ILCIpQ9uUck0Zw4bPny25JhLkNLOzv5vZJ6JXWOnwQFmGDCpQKDKfhiEXmhxx5t2S6iIb6DqGugEEO4cDH57uOVfMymhYr_hxA9qGKJsLMCraiIwoNCcF5RB69lWnHbKRNZ6jmFfl7u1Iamh3ai0Ey1bkhTDgjK5b84q3m_8Qo1zh3xsmBupilkvhbKf1s5PQSUWZhkiavEKdQevt1xB5juchd9z3-o4pm7kUJZSlDL-hEsII-YNklHvOKE1wMhmMXZzkXjD2gwwnwcRNskkyGU0w4ATUqeA5LSqJm0JtSixVEOwNjJ8Uuu9VXjFaAXWxl7dImDAV2KCAV_-qRVe3HZQ9JSqZQvUDcyBISQTq_9hVbQsYOTW0F2gmOAGckJH_B8qrj4EGH0OX6PrY81fGyR38F4eZztGU65Q2qFemifxUkVtWEzMPWBpm8EVdm823c4GA8LwkgwkoVhPAeScF5BuibqHj-RlrAL5VGl3Tqd4OrQWamGmz9eKmKhMiAQMgmLAm6_wFhNvsPJkhUOEKA7g6oAMz_Psjb-GV-FS_6zOBUDuhMWud-h97mRDPq1a9WoA5_zL3XLNku83dYXE1YGk8O7k_DMpHk6lde4F-IKAD472H1vi0rRIhsxpBR_3OrteDSZ3WOt0N4UX_-vRbD8GIuaok2eo3uCHtRIu6dtJ7Yd4cee9tDoPmqFbRXaqGl3KsydmjrbTwI0feSndb6V7QlQ4jkQQ__-DQya2TbpzijWB8ZJa4NmVn4w27W0NcqqcD1UQd4WIEIn6G_ldw3200F6EbjnPVvqj4DvtN3r7zaLupm2zxB8n2C864P8GMutahv_ALVNEDeSUZqo5QVkuCXi9GgxsmFMmEMMELZS6u2NxmADUwIkXIc33xvJPcwP9tB3yE9c7m0Pn8dzwdq99PO7QkupL8Niuvwi6Mty21l039LPAD3NNUMzL9M_-Y9CrJpr__z2M49MeT3mHqBunYzTIvzXNnMEkSPExxTnIywcMBTga4B82VMDW1hnNrGPXo1Fw2nKHrOoHvuEF_lEzSPB2P8jxzsU8Ca-AQ6KSsbw7uC1n05LTGABdfBR8ZVVpdP2K4GBeckLN8XMFFTk7bPt2r4U5rrP8COftW3w">