[C++20] [Modules] Allow ADL in dependent context for modules
authorChuanqi Xu <yedeng.yd@linux.alibaba.com>
Tue, 7 Feb 2023 05:58:11 +0000 (13:58 +0800)
committerChuanqi Xu <yedeng.yd@linux.alibaba.com>
Tue, 7 Feb 2023 06:09:46 +0000 (14:09 +0800)
commit84bf4ab087b105e0c72da9ec26ad45e9468fa7be
tree9476f24795372afd32e51f8c64585b8cf4c0f1f0
parentdcfd35d7042e7979d7da4858542acbaa8600acc1
[C++20] [Modules] Allow ADL in dependent context for modules

Close https://github.com/llvm/llvm-project/issues/60488.

Previously, when we instantiate a template, the argument dependent
lookup is performed in the context of the instantiation, which implies that the
functions not visible in the context can't be found by the argument
dependent lookup.

But this is not true, according to [module.context]p3, the instantiation
context for the implicit instantiation of a template should contain the
context of the primary module interface if the template is defined in
the module interface unit.

Note that the fix didn't implemnet [module.context]p3 precisely, see the
comments for example.
clang/lib/Sema/SemaLookup.cpp
clang/test/Modules/named-modules-adl-2.cppm [new file with mode: 0644]
clang/test/Modules/named-modules-adl.cppm [new file with mode: 0644]