public override void VisitInstanceFunctionCallSyntax(InstanceFunctionCallSyntax syntax) { base.VisitInstanceFunctionCallSyntax(syntax); if (bindings.TryGetValue(syntax.BaseExpression, out var baseSymbol) && baseSymbol is NamespaceSymbol namespaceSymbol) { var functionSymbol = namespaceSymbol.Type.MethodResolver.TryGetSymbol(syntax.Name); var foundSymbol = SymbolValidator.ResolveNamespaceQualifiedFunction(allowedFlags, functionSymbol, syntax.Name, namespaceSymbol); this.bindings.Add(syntax, foundSymbol); } }
public override void VisitInstanceFunctionCallSyntax(InstanceFunctionCallSyntax syntax) { base.VisitInstanceFunctionCallSyntax(syntax); if (!syntax.Name.IsValid) { // the parser produced an instance function calls with an invalid name // all instance function calls must be bound to a symbol, so let's // bind to a symbol without any errors (there's already a parse error) this.bindings.Add(syntax, new ErrorSymbol()); return; } if (bindings.TryGetValue(syntax.BaseExpression, out var baseSymbol) && baseSymbol is NamespaceSymbol namespaceSymbol) { var functionSymbol = namespaceSymbol.Type.MethodResolver.TryGetSymbol(syntax.Name); var foundSymbol = SymbolValidator.ResolveNamespaceQualifiedFunction(allowedFlags, functionSymbol, syntax.Name, namespaceSymbol); this.bindings.Add(syntax, foundSymbol); } }