Issue 91111
Summary [C++23] [Modules] module before include will have a "redefinition of concept" error
Labels new issue
Assignees
Reporter ncihnegn
    Similar to #87609.

LLVM: 18.1.5
OS: macOS Sonoma 14.4.1
CPU: Apple M1

Demo: https://github.com/ncihnegn/cpp-modules-demo

```
[1/8] Scanning /Users/foobar/Temp/cpp-modules-demo/foo.cxx for CXX dependencies
[2/8] Scanning /Users/foobar/Temp/cpp-modules-demo/main.cxx for CXX dependencies
[3/8] Generating CXX dyndep file CMakeFiles/foo.dir/CXX.dd
[4/8] Generating CXX dyndep file CMakeFiles/hello.dir/CXX.dd
[5/8] Building CXX object CMakeFiles/foo.dir/foo.cxx.o
[6/8] Linking CXX static library libfoo.a
[7/8] Building CXX object CMakeFiles/hello.dir/main.cxx.o
FAILED: CMakeFiles/hello.dir/main.cxx.o 
/usr/local/Sither/Cellar/llvm/18.1.5/bin/clang++   -std=c++20 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.4.sdk -MD -MT CMakeFiles/hello.dir/main.cxx.o -MF CMakeFiles/hello.dir/main.cxx.o.d @CMakeFiles/hello.dir/main.cxx.o.modmap -o CMakeFiles/hello.dir/main.cxx.o -c /Users/foobar/Temp/cpp-modules-demo/main.cxx
In file included from /Users/foobar/Temp/cpp-modules-demo/main.cxx:3:
In file included from /Users/foobar/Temp/cpp-modules-demo/bar.h:4:
/usr/local/Sither/Cellar/llvm/18.1.5/bin/../include/c++/v1/optional:571:9: error: redefinition of concept '__is_derived_from_optional' with different template parameters or requirements
  571 | concept __is_derived_from_optional = requires(const _Tp& __t) { []<class _Up>(const optional<_Up>&) {}(__t); };
      | ^
/Users/foobar/Temp/cpp-modules-demo/foo.cxx:3:10: note: '/usr/local/Sither/Cellar/llvm/18.1.5/bin/../include/c++/v1/optional' included multiple times, additional include site in header from module 'foo.<global>'
    3 | #include <optional>
      | ^
/Users/foobar/Temp/cpp-modules-demo/foo.cxx:2:1: note: foo.<global> defined here
    2 | module;
      | ^
/Users/foobar/Temp/cpp-modules-demo/bar.h:4:10: note: '/usr/local/Sither/Cellar/llvm/18.1.5/bin/../include/c++/v1/optional' included multiple times, additional include site here
    4 | #include <optional>
      |          ^
In file included from /Users/foobar/Temp/cpp-modules-demo/main.cxx:3:
In file included from /Users/foobar/Temp/cpp-modules-demo/bar.h:4:
/usr/local/Sither/Cellar/llvm/18.1.5/bin/../include/c++/v1/optional:1240:13: error: use of undeclared identifier '__is_derived_from_optional'
 1240 | requires(!__is_derived_from_optional<_Up>) && three_way_comparable_with<_Tp, _Up>
      |             ^
2 errors generated.
ninja: build stopped: subcommand failed.
```

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to