mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 22:02:23 +01:00
This gets us a step closer toward resolving TODOs in member access around facets, by making the lookup into a facet value a "lookup in base" operation instead of a "lookup in type of base". However the base given to find scopes in still remains the facet type of the facet, which is still a TODO. Then we can simplify the "lookup in type of base" case a bit, with a single code path doing the name lookup step. But we keep a TODO where if the type of base is a facet, we change the lookup target to be the facet type of the facet instead. This is toward having name lookup into an interface that is extending a named constraint work correctly with a `Self` in its specific. To perform that name lookup, we will need to tell name lookup what is the base, so that it can replace `Self` with the base. This change gets us in a position where we can correctly provide the base in the `T.F()` (lookup in facet) and `t.F()` (lookup in type of facet) correctly and straightforwardly. We provide a marginally improved diagnostic when looking into a facet with an incomplete facet type, which will move into AppendLookupScopesForConstant once we are looking into the facet directly instead of its type.