The index holds a gtest `TEST_F(Fixture, Name)` / `TEST_P` body as a
function named `TEST_F`; gtest makes it a method of a class derived from
`Fixture`. #2533 gave such a body the fixture's data members
(cppTestFixture), not its methods. rocksdb's tests call `DBTestBase`'s
`Put(…)`, `Flush()`, `Key(i)` and `NewIterator(…)` bare, and those calls
were guessed by name, often reaching a namesake in another class at 0.4
(`ColumnFamilyTestBase::Put`); `auto iter = NewIterator(…)` gave `iter`
no type, so `iter->SeekToFirst()` reached the nested
`MemTableRep::Iterator`.
- cppImplicitThisMethod is #2479's lookup, taken out of
matchCppImplicitThisCall: the caller's class, its bases, the classes
around it, with cppTestFixture as the owner of a gtest body.
matchCppImplicitThisCall keeps the local-shadowing check for the link.
- cppExpressionType types a bare call by the same lookup, as on `this`,
instead of the class's first declaration. Of two classes sharing a name
in different test files it reads the caller's own, and in a template a
dependent base a using-declaration names still counts, as before
(protobuf's `using RepeatedFieldWrapper<T>::MutableRepeatedField;`).
`this` in a gtest body points to the fixture.
- A `->` call on a value of a type from outside the project no longer
takes the type's last name for the class it is in
(isCppArrowThroughOutsideType); the name strategies decide.
matchCppDeclaredTypeCall steps aside for `->` on a value before #2532's
outside-type check, so typing JsonTest's `auto m = ToProto<Any>(…)` (an
`absl::StatusOr<Any>`) had sent `m->value()` to protobuf's own
`hpb::StatusOr::value` at 0.9.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>