public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "asynts+bugs at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/100617] [modules] Exported namespace not visible from outside when the module imports another module that declares the same namespace
Date: Fri, 11 Feb 2022 12:47:12 +0000	[thread overview]
Message-ID: <bug-100617-4-7jLE9s1RMq@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-100617-4@http.gcc.gnu.org/bugzilla/>

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

Paul Scharnofske <asynts+bugs at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |asynts+bugs at gmail dot com

--- Comment #2 from Paul Scharnofske <asynts+bugs at gmail dot com> ---
I ran into the same issue and produced a slightly different example:

```c++
// foo.cpp
export module foo;

import bar;

namespace foo
{
    export void foo() { }
}
```
```c++
// bar.cpp
export module bar;

namespace foo
{

}
```
```c++
// baz.cpp
export module baz;

import foo;
import bar;

int main() {
    foo::foo();
}
```
```none
$ ~/.local/lib/gcc-trunk/bin/g++ --version
g++ (GCC) 12.0.1 20220211 (experimental)
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ ~/.local/lib/gcc-trunk/bin/g++ -Wall -Wextra -std=c++20 -fmodules-ts bar.cpp
foo.cpp baz.cpp
baz.cpp: In function 'int main()':
baz.cpp:8:5: error: 'foo' has not been declared
    8 |     foo::foo();
      |     ^~~
baz.cpp: At global scope:
baz.cpp:2:8: warning: not writing module 'baz' due to errors
    2 | export module baz;
      |        ^~~~~~
```
https://godbolt.org/z/8zMaq6eqr

-   In other words, the 'export' specifier doesn't even have to be mentioned.
    It is enough if the same namespace is mentioned even if it is completely
empty and not exported.

-   The issue disappears if the 'import bar' is removed from 'foo.cpp', in
other words, this only happens
    if that module is actually imported.  It doesn't matter that it's still
imported in 'baz.cpp'.

  parent reply	other threads:[~2022-02-11 12:47 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-15 19:42 [Bug c++/100617] New: " amorvincitomnia.iw at gmail dot com
2021-05-16  8:53 ` [Bug c++/100617] " amorvincitomnia.iw at gmail dot com
2022-02-11 12:47 ` asynts+bugs at gmail dot com [this message]
2022-02-11 13:02 ` johelegp at gmail dot com
2024-02-11 14:15 ` nshead at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-100617-4-7jLE9s1RMq@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).