1 // { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks-uid-alias" }
2 export module bar;
3 // { dg-module-cmi bar }
4 
5 import foo;
6 
7 namespace bar
8 {
9   export int quux (int i = foo::X().frob<0> ())
10   {
11     return i;
12   }
13 
14   export int toto (int i = foo::TPL<0>().frob ())
15   {
16     return i;
17   }
18 }
19 
20 // { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::X'@'foo' section} module } }
21 // { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::X@foo:.::template frob@foo:.'@foo} module } }
22 
23 // { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::TPL'@'foo' section} module } }
24 // { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::template TPL@foo:.'@foo} module } }
25 
26 // { dg-final { scan-lang-dump {Cluster members:\n  \[0\]=specialization definition '::foo@foo:.::TPL<0x0>'\n  \[1\]=specialization declaration '::foo@foo:.::TPL<0x0>::TPL<0x0>'\n(  \[.\]=[^\n]* '\n)*  \[.\]=decl definition '::foo@foo:.::TPL<0x0>::frob<0x0>'\n} module } }
27 
28 // { dg-final { scan-lang-dump {Cluster members:\n  \[0\]=specialization definition '::foo@foo:.::X@foo:.::frob<0x0>'} module } }
29 // { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo@foo:.::TPL<0x0>'} module } }
30 // { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo@foo:.::X@foo:.::frob<0x0>'} module } }
31