internal SymWithType LookupMember(
string name,
EXPR callingObject,
ParentSymbol context,
int arity,
MemberLookup mem,
bool allowSpecialNames,
bool requireInvocable)
{
CType type = callingObject.type;
if (type.IsArrayType())
{
type = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_ARRAY);
}
if (type.IsNullableType())
{
type = type.AsNullableType().GetAts(_semanticChecker.GetSymbolLoader().GetErrorContext());
}
if (!mem.Lookup(
_semanticChecker,
type,
callingObject,
context,
GetName(name),
arity,
MemLookFlags.TypeVarsAllowed |
(allowSpecialNames ? 0 : MemLookFlags.UserCallable) |
(name == SpecialNames.Indexer ? MemLookFlags.Indexer : 0) |
(name == SpecialNames.Constructor ? MemLookFlags.Ctor : 0) |
(requireInvocable ? MemLookFlags.MustBeInvocable : 0)))
{
return null;
}
return mem.SwtFirst();
}