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

    <tr>
        <th>Summary</th>
        <td>
            diagnostic: "module not found" is reported for missing semicolon after import module statement
        </td>
    </tr>

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

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

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

<pre>
    clang++-19.1 gives incorrect diagnostic when import module statement is not followed by semicolon:
e.g.
```
import mod1
//         ^ note no semicolon
```
errors with: 
```
/opt/compiler-explorer/clang-19.1.0/bin/clang++ --gcc-toolchain=/opt/compiler-explorer/gcc-14.2.0   -fcolor-diagnostics -fno-crash-diagnostics -g -std=gnu++20 -Wno-private-header -MD -MT CMakeFiles/test_mod.dir/main.cpp.o -MF CMakeFiles/test_mod.dir/main.cpp.o.d @CMakeFiles/test_mod.dir/main.cpp.o.modmap -o CMakeFiles/test_mod.dir/main.cpp.o -c /app/main.cpp
main.cpp:1:8: fatal error: module 'mod1' not found
    1 | import mod1
      | ~~~~~~~^~~~
```
while gcc correctly reports
```
main.cpp:1:12: error: expected ';' before end of line
    1 | import mod1
      |            ^
 |            ;
```
reproduce link: https://godbolt.org/z/6x3KW6Gx9
main.cpp:
```
import mod1
//         ^ note no semicolon
int main() {
    return f();
}
```
mod1.cppm
```
export module mod1;
export int f()
{
 return 1;
}
```
CMakeCache.txt
```
cmake_minimum_required(VERSION 3.28)
project(test_mod)
set(CMAKE_CXX_STANDARD 20)
add_executable(test_mod)
target_sources(test_mod
  PUBLIC
 main.cpp
)
target_sources(test_mod
  PUBLIC
    FILE_SET CXX_MODULES
 FILES
        mod1.cppm
)

```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVU2P4jgT_jXmUkqUOEDgkEP4yKvRDDOvpnt25oaMXQneduys7XTTc9jfvjKE5mM1q15pIwShqvzUU-WnbOacbDRiQSYLMlmNWO_3xhY_zQtaN9oZ8VpwxXRD6ILQRZTO4xQa-YwOpObGWuQehGSNNs5LDi971CDbzlgPrRG9QnCeeWxRe5AOtPFQG6XMCwrYvYLDVnKjjCZZSZIS4yYmSUmmyfBJygtYGjy0IrSC80Mm6wCJoM0V1C0AWmusgxfp9yQr4c5LaGU6T2jFTdtJhTbCQ6eMRRtsofJjzXFCaLWT-mw8tQOiqOE88sYovmdSk2z1j3ghOB3HNE4AIKoDWxtduucgqrWJuGVuf2tuIHJekGzV6P6UmiYQfdcm6qx8Zh6jPTKBFqLNCqLNIyw37AkrqdARWnl0ftsaEQsZWLRM6ph3XWwg2lTvDI0FkHHyztjWiJZ1EJl38-BAaMW67spMkvLtNStTkpWzsH8180zBcVPD30FkhOZHhdB8kFivBUnKoJEUSL6EWxkN6smX8OfpIZN1-L7VxsteKoSGcxiUrl7BYsBxd5F3RFMaqL1xxEOH3KMILEm2CCR3WBuLgFqAqUFJje9ie_WQyTq47q3Z4o6axc4a0XMMWZ4Cnb33nQvzdpylxoidUT42tiG0-kloNT1kH79P_3eY3xb2X8yl1B4CJKEzQudA8sVQnkXfWw31yTFUka_u22xEGti09yN-uD5wjpSOCIM9ZD0jB9hj0iFj-qtcR-UuGd9j7A_-zslb9oTbVmrZ9u3W4h-9tCgInf22_vrw4ctnyOJzus6a35F7Qmdn-Z_sDoNtuSk_rrfLHz-2D4_l51X5dQU0OQUwIbZ4QN57tlP4t_We2Qb91pne8jBdF3fo6P-_LT59WIbXq3H6dwsBoPrwab19WD9CILj5svr2af0QXMH-8CZMgJt9OTX5ql8jUWRins3ZCIs0zyZJns5pOtoXOM4SntTpeJ6MZ2I-RzZJajrZsSRPaT3NR7KgCR2nlI5pQic0jZGm-Wy2m9WYTzMqKBkn2DKpYqWe2yDhkXSuxyKlaTKdjhTboXLnq80WISra9Y0j40RJ591lnZdeYXE5dI9XBaWDpC5nCqXhGjudAiigNhZa6ZzUzUXowGqP9lfX4Ki3qribQen3_S7mpiW0CpSGn-hNPNWxrnCIDqU9F_SvAAAA__8EnVmy">