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

    <tr>
        <th>Summary</th>
        <td>
            FunctionOpInterface is incompatible with SingleBlock trait
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir:core
      </td>
    </tr>

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

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

<pre>
    The default implementation of `FunctionOpInterface::verifyBody()` delegates to `$_op.front()`, but the interface methods of FunctionOpInterface may be shadowed in various ways making this illegal to assume. Concretely, the `SingleBlock` trait defines `front()` (and a number of other things) differently, resulting in ambiguous symbol resolution.

This can be pretty easily fixed locally by accessing generically in the generated code: `Block &entryBlock = $_op->getRegion(0).front();` but it is a shame that these APIs shadow each other in this way.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxtU8FunDAQ_Rq4WEEssJvlwCGbdKWcWrW5V2N7ADfGRrbZLX_fGTZpGymSBYw9nvfevEF6vXYvIwqNPSw2CTPNFid0CZLxTvheZIfyvDjF4df52SUMPSjM6gdaFwymX09UJKuOWdVSLlWyOEDCKJLny1nV_PRz0Qfv0t-srHoUckkiEbR5rykmTKPXkVE_gRQTrEKiiCNof0VNF8UFgvFLFFdYI52_GjdQTROFsczCMgeIcZmwEI_eqYAJ7crojExEftANiyfr1SuTTwFM4mYYRwJo5yNtQV_gtADhlkliYKaeKgUGdUOkLKFN32OgDt5wAkbqK_MiujBJMyxMOK6T9JZPvV1YaJGVT1n5cHu-sAQFjuXOxDmtAiEau4re_CblRBcsRXIVoBTGyPUHdGTH7YCwWOC2RV5oobxmz1jSJpaUHIhjWN-i-kncjLrL6i8Dpu84ECmSS1a1H8yrT9wINo86RTSBDZmQ8GDzM6J4-PYc32wi3mp869FGymxmFbnuat3WLeTJJIvdZ36zjU75aaZZlBbF1aRR_GfYza18CbYbU5ojz2R1pjVQ4iILukqBtZf3190c_C9UpORsaCiQ_Drvm2N5n4_dfYV1D7t2Vx-aY13rw_4A0Oqy7pVud1rmFiTa2GX7U1ZVkzWB4JQPSFG2f8pNV5VVVTblkV676r4AJeXh2FRlve9L7NusKXECYwtmUvgw5KHbSMmFBqcprYkp_jukqTWDQ9wAqT4s9G-ELtL8WgjkutHkX77p6DYRfwD6UkfH">