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