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

    <tr>
        <th>Summary</th>
        <td>
            Module error about "definition provided earlier" when mixing C++ with Objective-C++ (.mm)
        </td>
    </tr>

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

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

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

<pre>
    I will attach a near minimal project that uses CMake. I'm using the latest of Clang (17) and CMake on macOS.

[CxxModulesIssue3.zip](https://github.com/llvm/llvm-project/files/10946984/CxxModulesIssue3.zip)

For ease of reading, the error and files are pasted here:

Error:

```text
FAILED: CMakeFiles/Common.dir/Clipboard.mm.o 
/Users/rob/Dev/llvm-project/build/bin/clang++   -g -std=c++2b -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk -Xclang -fno-validate-pch -MD -MT CMakeFiles/Common.dir/Clipboard.mm.o -MF CMakeFiles/Common.dir/Clipboard.mm.o.d @CMakeFiles/Common.dir/Clipboard.mm.o.modmap -o CMakeFiles/Common.dir/Clipboard.mm.o -c /Users/rob/Workspace/MonoRepo2/Clipboard.mm
In module 'MyStrings' imported from /Users/rob/Workspace/MonoRepo2/Clipboard.mm:2:
/Users/rob/Dev/llvm-project/build/bin/../include/c++/v1/string_view:329:5: error: 'std::__1::basic_string_view<char>::basic_string_view' from module 'MyStrings.<global>' is not present in definition of 'std::string_view' provided earlier
    basic_string_view(_Range&& __r) : __data_(ranges::data(__r)), __size_(ranges::size(__r)) {}
 ^
/Users/rob/Dev/llvm-project/build/bin/../include/c++/v1/string_view:289:5: note: declaration of 'basic_string_view' does not match
 basic_string_view() _NOEXCEPT : __data_(nullptr), __size_(0) {}
 ^
/Users/rob/Dev/llvm-project/build/bin/../include/c++/v1/string_view:292:5: note: declaration of 'basic_string_view' does not match
 basic_string_view(const basic_string_view&) _NOEXCEPT = default;
[... on and on ... ]
```

CMakeLists.txt:
```cmake
cmake_minimum_required(VERSION 3.25)

set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "2182bf5c-ef0d-489a-91da-49dbc3090d2a")

set(MY_CLANG_DIR /Users/rob/Dev/llvm-project/build)
set(CMAKE_C_COMPILER ${MY_CLANG_DIR}/bin/clang)
set(CMAKE_CXX_COMPILER ${MY_CLANG_DIR}/bin/clang++)
set(CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS ${MY_CLANG_DIR}/bin/clang-scan-deps)
set(CMAKE_CXX_STANDARD 23)

include(clang_modules.cmake)

project(Demo VERSION 1.0)

add_library(Common Clipboard.mm)

target_sources(Common
 PUBLIC
    FILE_SET cxx_modules TYPE CXX_MODULES FILES
    Strings.cc 
)

set_source_files_properties(Clipboard.mm PROPERTIES COMPILE_FLAGS "-Xclang -fno-validate-pch")
```

Strings.cc
```c++
module;
#include <string>
export module MyStrings;
export struct String { };
```

Clipboard.h
```

#ifndef Clipboard_h
#define Clipboard_h

#include <string>
#include <optional>

class Clipboard {
public:
    std::optional<std::string> getString();
};

#endif
```

Clipboard.mm
```
#include "Clipboard.h"
import MyStrings;

std::optional<std::string> Clipboard::getString() {
    return std::nullopt;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEV0tv4zgS_jX0pSBBKvl58EGRpYExcWLE6d3MSaBE2uZGErUklaTn1y8oyc-4Z9IN7C4QxDZZrMdXH6uKVGuxqzifk9EdGS0GtDF7qeaqEq-0YlwNMsm-z5fwLooCqDE03wOFilMFpahESQuolfwXzw2YPTXQaK4hWtFX7sKS4KSERotqB2bPoaCGawNyC1FBqx0QnPoTgjOgFevOgKygpPnjxiXegnhh_390F318rCRrCq6XWjc8cP8UNRktCE73xtSaBCHBhGCyE2bfZG4uS4JJUbwdPpzeSYLJVhRcE0x8bzYcz6ZDgslN7Tg79yGRCjjV3HqvOGWi2hGM2rC4UlK1MbSqgSoONdWGM9hzxa1vZ4piK321RsZe92f4h-nthcv7eEGCsAMm6Z2OZFnKymVC2R-FqDNJFXPL0pXQ68Lkm-bKCiuZEUwW_O0zCFkjCmY_RUUwyW06CN4RvAMAZweONowEi7xbwwwcob9rJaUBgklY14XIqRGysmZecsm4S-u69a8yvDK6s8sLWXPr6bqgZitVaddXNr8vbt0vXUluFr-fhPzA9V3NXsF5aV0EZ1tJ540WglHDnTrfg7NagLN6_jpKzir5srDLgAy9L0uXkpW0Bkf-hDc5fErYP6V61TXNucVBVvKJ1xKvjna5XlZQtrwFgpPV941RotppghMQZS2VZeBWyfIXTQQhnnj6C6xyXYKJqPKiYdZOTyaCyZtPMNGts-mb4O8kCAOckSAcWb7z_oLYmFoahiQI09TvvmRUizy9OBzle6pIEP9IACcdCjegckkQ7QqZ0cKet7hpqKSBWnHNKwOiAsa3ohKW6_bqn_t0ZaNW8k0wzoBTVQiuOuAAAG64NE2faLXjBMcEx5CmypZBG3SaMmpoSnCqrIDuTNk1e6iVa_8iSFMt_uTXknbtXBLI5I5MFr0zZBT_b_KJ02M-K2lsDQTG84IqeobkzVQxybsclNTk-97vWwja4NKHx_glitfPV9hVTVHURn1Cyvs_IjLD_zYiuay0ubUzvsZqYWlNm8KQ4O7YY13Xtf3XNjJZgf1lO-xlgzrvWm2RuxfaaNd8mFOpOMjmJX3l3Vr7NW0HhqZMFf93IxRnBKf_iJ82y8cHCFwcXXVczQ3BabQKf4_T-GUdPy1X8cNzeJ9GLy_p6nHx7T5Ou91wvQSCiP4Us-0od_jWY85wOqPOzGfUGc5YlgfezGNICeJNM6s_0ug-fPgtXSyfPpfLv6LC7LO3URo9rtbL-9iqGpLJ3bl2S72rvntLxcvLTyrpmPc3qnoNmyh8SBfxevMV1Y7OaeUwXusfqt88hw-L8GkBGFyhe7wc01ZX2tVg7XbcuJQ9Qjtd8FLCgRq-610JUsbSQmSKqu_Wjba9wkXrupQ3VO24SbVsVG47cn-kv0nrb3f3y-hUrZPlfZxu4mfIPz4O_sLzH-sYTsTbtFKb06FDP8nz4xh2zbLeftoOiWmt7MBjROfPme-wfnpcx0_Py3gDfdrS5D78zeYKfzgHXfD61mU9OXh9S3vqtKtduKeigEGfQCBB1JUU2yjbTf5hR4xDVz1NH4fD_b42qslND5CtvWAZdrRws7Ac4dj_hZR1blsxvj2lPt0ft9q2zW9s_X1gl5uytvW5GxDONOQF1fqkvm0qHYubrBD5sRpachwnhpOu6GqKIEEMO246lLrmdsLoHK-Dh7xiYvslDA_D4rXYWZSI55Aj9ne3nSFvZLan9NeiOmruNq6CPOFmgVLcNKo64WXbuKzNBRKXsQzYPGCzYEYHfO6PJ9PhbOgPcbCfs2ybB97En2VDz_e3GcNRxsbo-9M8G445H4g5ehh4ge97HiKiiz4f4Xg4RNzm-ThDMvR4SUXh2rrvSrUbCPs4nI_9IJgOCprxQrevZsSKv0O7abEbLQZq3vaKrNlpMvSKtkUetRhhCj7v3puHt2MmG_uywrNh89M4iQjve15BKT7sTYr699q7MHt4zGzlFG_cOSwTnHaFcNCoYv7Tj-Q2GtsA22j_EwAA__9LHeVl">