public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/106851] New: [modules] Name conflict for exported using-declaration
@ 2022-09-06 13:58 redi at gcc dot gnu.org
  2022-09-06 14:15 ` [Bug c++/106851] " johelegp at gmail dot com
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: redi at gcc dot gnu.org @ 2022-09-06 13:58 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106851

            Bug ID: 106851
           Summary: [modules] Name conflict for exported using-declaration
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
            Blocks: 103524
  Target Milestone: ---

$ cat lib.h
namespace outer {
  template<typename T> void any_of(T) { }

  namespace inner {
    struct A { };
    inline constexpr A any_of;
  }
}

$ gcc -c -std=c++23 -fmodules-ts -x c++-header lib.h


$ cat lib.cc
export module lib;

import "lib.h";

export using outer::any_of;
export using outer::inner::any_of;


$ gcc -c -std=c++23 -fmodules-ts lib.cc 
lib.cc:6:28: error: ‘constexpr const outer::inner::A outer::inner::any_of’
conflicts with a previous declaration
    6 | export using outer::inner::any_of;
      |                            ^~~~~~
In module ./lib.h, imported at lib.cc:3:
lib.h:2:29: note: previous declaration ‘void outer::any_of(T)’
    2 |   template<typename T> void any_of(T) { }
      |                             ^~~~~~
lib.cc:1:8: warning: not writing module ‘lib’ due to errors
    1 | export module lib;
      |        ^~~~~~


The names are in different scopes, shouldn't they be exported that way too?


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103524
[Bug 103524] [meta-bug] modules issue

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/106851] [modules] Name conflict for exported using-declaration
  2022-09-06 13:58 [Bug c++/106851] New: [modules] Name conflict for exported using-declaration redi at gcc dot gnu.org
@ 2022-09-06 14:15 ` johelegp at gmail dot com
  2023-11-09 11:20 ` nathanieloshead at gmail dot com
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: johelegp at gmail dot com @ 2022-09-06 14:15 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106851

Johel Ernesto Guerrero Peña <johelegp at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |johelegp at gmail dot com

--- Comment #1 from Johel Ernesto Guerrero Peña <johelegp at gmail dot com> ---
Could https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106363 be related?

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/106851] [modules] Name conflict for exported using-declaration
  2022-09-06 13:58 [Bug c++/106851] New: [modules] Name conflict for exported using-declaration redi at gcc dot gnu.org
  2022-09-06 14:15 ` [Bug c++/106851] " johelegp at gmail dot com
@ 2023-11-09 11:20 ` nathanieloshead at gmail dot com
  2024-02-28 11:10 ` redi at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: nathanieloshead at gmail dot com @ 2023-11-09 11:20 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106851

Nathaniel Shead <nathanieloshead at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nathanieloshead at gmail dot com

--- Comment #2 from Nathaniel Shead <nathanieloshead at gmail dot com> ---
This behaviour should be as expected right? The 'using' is trying to bring both
names into the same scope (the global namespace), irrespective of the fact that
we're also exporting that new declaration. (That is, removing the 'export'
keywords from this test case gives the exact some result.)

That said, perhaps it would be helpful for the error message to point to the
using-declaration it actually conflicts with, rather than the definition that
said using-declaration points to.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/106851] [modules] Name conflict for exported using-declaration
  2022-09-06 13:58 [Bug c++/106851] New: [modules] Name conflict for exported using-declaration redi at gcc dot gnu.org
  2022-09-06 14:15 ` [Bug c++/106851] " johelegp at gmail dot com
  2023-11-09 11:20 ` nathanieloshead at gmail dot com
@ 2024-02-28 11:10 ` redi at gcc dot gnu.org
  2024-03-06 14:31 ` redi at gcc dot gnu.org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: redi at gcc dot gnu.org @ 2024-02-28 11:10 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106851

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2024-02-28
     Ever confirmed|0                           |1
           Keywords|rejects-valid               |diagnostic

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Nathaniel Shead from comment #2)
> This behaviour should be as expected right?

Quite possibly, I still don't know how to use modules. I was just trying to
figure out how to define a 'std' module that includes all the library headers
and then exports everything.

Let's reclassify this as a diagnostic bug then.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/106851] [modules] Name conflict for exported using-declaration
  2022-09-06 13:58 [Bug c++/106851] New: [modules] Name conflict for exported using-declaration redi at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2024-02-28 11:10 ` redi at gcc dot gnu.org
@ 2024-03-06 14:31 ` redi at gcc dot gnu.org
  2024-03-06 23:59 ` nshead at gcc dot gnu.org
  2024-03-07  0:02 ` redi at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: redi at gcc dot gnu.org @ 2024-03-06 14:31 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106851

--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I tried doing it this way instead

namespace std {
  export using std::vector;
  namespace pmr {
    export using std::vector;
  }
}

but that didn't work, nothing got exported. But maybe that will be fixed by
Nathaniel's https://gcc.gnu.org/pipermail/gcc-patches/2024-March/647088.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/106851] [modules] Name conflict for exported using-declaration
  2022-09-06 13:58 [Bug c++/106851] New: [modules] Name conflict for exported using-declaration redi at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2024-03-06 14:31 ` redi at gcc dot gnu.org
@ 2024-03-06 23:59 ` nshead at gcc dot gnu.org
  2024-03-07  0:02 ` redi at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: nshead at gcc dot gnu.org @ 2024-03-06 23:59 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106851

--- Comment #5 from Nathaniel Shead <nshead at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #4)
> I tried doing it this way instead
> 
> namespace std {
>   export using std::vector;
>   namespace pmr {
>     export using std::vector;
>   }
> }
> 
> but that didn't work, nothing got exported. But maybe that will be fixed by
> Nathaniel's https://gcc.gnu.org/pipermail/gcc-patches/2024-March/647088.html

Yup, looks to be this issue. This is merged into trunk now and with a quick
test appears to work: https://godbolt.org/z/T5zPfPGro

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug c++/106851] [modules] Name conflict for exported using-declaration
  2022-09-06 13:58 [Bug c++/106851] New: [modules] Name conflict for exported using-declaration redi at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2024-03-06 23:59 ` nshead at gcc dot gnu.org
@ 2024-03-07  0:02 ` redi at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: redi at gcc dot gnu.org @ 2024-03-07  0:02 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106851

--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Excellent! Thanks for the fix.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-03-07  0:02 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-06 13:58 [Bug c++/106851] New: [modules] Name conflict for exported using-declaration redi at gcc dot gnu.org
2022-09-06 14:15 ` [Bug c++/106851] " johelegp at gmail dot com
2023-11-09 11:20 ` nathanieloshead at gmail dot com
2024-02-28 11:10 ` redi at gcc dot gnu.org
2024-03-06 14:31 ` redi at gcc dot gnu.org
2024-03-06 23:59 ` nshead at gcc dot gnu.org
2024-03-07  0:02 ` redi at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).