Hi,

This list is mostly just a bugzilla feed and so isn't widely monitored.
If you're confident the behaviour is a bug then it would be better to
file a bugzilla ticket.  If you're not sure and want to double-check
what the correct behaviour is then it'd be better to ask on gcc-help.

Thanks,
Richard

Alexander Christensen via Gcc-bugs <gcc-bugs@gcc.gnu.org> writes:
> Hi,
>
> This is a rather strange thing, which suspiciously looks like bug. I have a 
> file like this:
>
> ```
> export module engine.memory : align_type;
> export import engine.core;
>
> export I32 get_5()
> {
>     return 5;
> }
>
> export namespace engine::memory
> {
>     enum class AlignType : I32
>     {
>         align_1   = 1,
>         align_2   = 2,
>         align_4   = 4,
>         align_8   = 8,
>         align_16  = 16,
>         align_32  = 32,
>         align_64  = 64,
>         align_128 = 128,
>         align_256 = 256
>     };
> }
> ```
>
> I have another translation unit which then imports the module engine.memory. 
> That file can use the function get_5(), but whenever I try to use the 
> namespace engine.memory I get an error that that namespace has not been 
> defined.
>
> If I remove the `export import engine.core` then the namespace is suddenly 
> exported. (!)
>
> So there is an issue with namespaces being hidden (ie. non-exported) whenever 
> a module partition unit imports another module. It does not make any 
> difference if the imported module is export-import'ed or just imported.
>
> Best,
> Alexander

Reply via email to