@@ -1261,18 +1261,17 @@ static Type diagnoseUnknownType(TypeResolution resolution,
1261
1261
comp->getNameRef (), moduleType->getModule ()->getName ());
1262
1262
} else {
1263
1263
LookupResult memberLookup;
1264
- // Let's try to lookup given identifier as a member of the parent type,
1265
- // this allows for more precise diagnostic, which distinguishes between
1266
- // identifier not found as a member type vs. not found at all.
1267
- NameLookupOptions memberLookupOptions = lookupOptions;
1268
- memberLookupOptions |= NameLookupFlags::IgnoreAccessControl;
1269
- memberLookup = TypeChecker::lookupMember (dc, parentType,
1270
- comp->getNameRef (),
1271
- memberLookupOptions);
1264
+ // Let's try to look any member of the parent type with the given name,
1265
+ // even if it is not a type, allowing for a more precise diagnostic.
1266
+ NLOptions memberLookupOptions = (NL_QualifiedDefault |
1267
+ NL_IgnoreAccessControl);
1268
+ SmallVector<ValueDecl *, 2 > results;
1269
+ dc->lookupQualified (parentType, comp->getNameRef (), memberLookupOptions,
1270
+ results);
1272
1271
1273
1272
// Looks like this is not a member type, but simply a member of parent type.
1274
- if (!memberLookup .empty ()) {
1275
- auto member = memberLookup [0 ]. getValueDecl () ;
1273
+ if (!results .empty ()) {
1274
+ auto member = results [0 ];
1276
1275
diags.diagnose (comp->getNameLoc (), diag::invalid_member_reference,
1277
1276
member->getDescriptiveKind (), member->getName (),
1278
1277
parentType)
0 commit comments