protected override LookupResult Lookup(IdentifierNameSyntax name, Package fromPackage) { var identifier = name.Identifier.ValueText; // First look in the current container var result = Resolve(mergedContainer.GetMembers(identifier), fromPackage); if(!result.IsEmpty) return result; // Then look in the imported names var importedSymbols = imports[identifier].Select(x => x.Reference).ToList(); result = Resolve(importedSymbols, fromPackage); if(!result.IsEmpty) return result; // Then look in containing scopes if(ContainingScope != null) return ContainingScope.Lookup(name, fromPackage); return LookupResult.Empty; }
protected abstract LookupResult Lookup(IdentifierNameSyntax identifierName, Package fromPackage);
internal IdentifierName(IdentifierNameSyntax syntax, Package containingPackage, DeclarationReference declaration) : base(syntax, containingPackage) { Declaration = declaration; }
protected override LookupResult Lookup(IdentifierNameSyntax identifierName, Package fromPackage) { throw new NotImplementedException(); }