public override void VisitOperatorMemberCref(OperatorMemberCrefSyntax node) { if (!PreVisit(node)) { return; } node.Parameters?.Accept(this); base.VisitOperatorMemberCref(node); PostVisit(node); }
// NOTE: not guaranteed to be a method (e.g. class op_Addition) // NOTE: constructor fallback logic applies private ImmutableArray <Symbol> BindOperatorMemberCref(OperatorMemberCrefSyntax syntax, NamespaceOrTypeSymbol?containerOpt, out Symbol?ambiguityWinner, BindingDiagnosticBag diagnostics) { const int arity = 0; CrefParameterListSyntax?parameterListSyntax = syntax.Parameters; bool isChecked = syntax.CheckedKeyword.IsKind(SyntaxKind.CheckedKeyword); // NOTE: Prefer binary to unary, unless there is exactly one parameter. // CONSIDER: we're following dev11 by never using a binary operator name if there's // exactly one parameter, but doing so would allow us to match single-parameter constructors. SyntaxKind operatorTokenKind = syntax.OperatorToken.Kind(); string? memberName = parameterListSyntax != null && parameterListSyntax.Parameters.Count == 1 ? null : OperatorFacts.BinaryOperatorNameFromSyntaxKindIfAny(operatorTokenKind, isChecked); memberName = memberName ?? OperatorFacts.UnaryOperatorNameFromSyntaxKindIfAny(operatorTokenKind, isChecked: isChecked); if (memberName == null || (isChecked && !syntax.OperatorToken.IsMissing && !SyntaxFacts.IsCheckedOperator(memberName))) // the operator cannot be checked { ambiguityWinner = null; return(ImmutableArray <Symbol> .Empty); } ImmutableArray <Symbol> sortedSymbols = ComputeSortedCrefMembers(syntax, containerOpt, memberName, arity, syntax.Parameters != null, diagnostics); if (sortedSymbols.IsEmpty) { ambiguityWinner = null; return(ImmutableArray <Symbol> .Empty); } return(ProcessCrefMemberLookupResults( sortedSymbols, arity, syntax, typeArgumentListSyntax: null, parameterListSyntax: parameterListSyntax, ambiguityWinner: out ambiguityWinner, diagnostics: diagnostics)); }
public override void VisitOperatorMemberCref(OperatorMemberCrefSyntax node) { Debug.Fail(node.ToString()); base.VisitOperatorMemberCref(node); }
// NOTE: not guaranteed to be a method (e.g. class op_Addition) // NOTE: constructor fallback logic applies private ImmutableArray<Symbol> BindOperatorMemberCref(OperatorMemberCrefSyntax syntax, NamespaceOrTypeSymbol containerOpt, out Symbol ambiguityWinner, DiagnosticBag diagnostics) { const int arity = 0; CrefParameterListSyntax parameterListSyntax = syntax.Parameters; // NOTE: Prefer binary to unary, unless there is exactly one parameter. // CONSIDER: we're following dev11 by never using a binary operator name if there's // exactly one parameter, but doing so would allow us to match single-parameter constructors. SyntaxKind operatorTokenKind = syntax.OperatorToken.CSharpKind(); string memberName = parameterListSyntax != null && parameterListSyntax.Parameters.Count == 1 ? null : OperatorFacts.BinaryOperatorNameFromSyntaxKindIfAny(operatorTokenKind); memberName = memberName ?? OperatorFacts.UnaryOperatorNameFromSyntaxKindIfAny(operatorTokenKind); if (memberName == null) { ambiguityWinner = null; return ImmutableArray<Symbol>.Empty; } ImmutableArray<Symbol> sortedSymbols = ComputeSortedCrefMembers(syntax, containerOpt, memberName, arity, syntax.Parameters != null, diagnostics); if (sortedSymbols.IsEmpty) { ambiguityWinner = null; return ImmutableArray<Symbol>.Empty; } return ProcessCrefMemberLookupResults( sortedSymbols, arity, syntax, typeArgumentListSyntax: null, parameterListSyntax: parameterListSyntax, ambiguityWinner: out ambiguityWinner, diagnostics: diagnostics); }
public override void VisitOperatorMemberCref(OperatorMemberCrefSyntax node) { node.Parameters?.Accept(this); base.VisitOperatorMemberCref(node); }
public override void VisitOperatorMemberCref(OperatorMemberCrefSyntax node) { throw new NotImplementedException(); }
public override void VisitOperatorMemberCref(OperatorMemberCrefSyntax node) { Log(node, "Unsupported Syntax !"); }
public TameOperatorMemberCrefSyntax(OperatorMemberCrefSyntax node) { Node = node; AddChildren(); }
public override void VisitOperatorMemberCref(OperatorMemberCrefSyntax node) { base.VisitOperatorMemberCref(node); }
/// <summary> /// /// </summary> /// <param name="node"></param> public override sealed void VisitOperatorMemberCref(OperatorMemberCrefSyntax node) { this.OnNodeVisited(node, this.type.IsInstanceOfType(node)); base.VisitOperatorMemberCref(node); }
/// <summary> /// /// </summary> /// <param name="node"></param> public override sealed void VisitOperatorMemberCref(OperatorMemberCrefSyntax node) { this.OnNodeVisited(node); if (!this.traverseRootOnly) base.VisitOperatorMemberCref(node); }
public override SyntaxNode VisitOperatorMemberCref(OperatorMemberCrefSyntax node) { node = (OperatorMemberCrefSyntax)base.VisitOperatorMemberCref(node); Classes.Add(node); return(node); }
public override Evaluation VisitOperatorMemberCref(OperatorMemberCrefSyntax node) { node.Parameters?.Accept <Evaluation>(this); return(base.VisitOperatorMemberCref(node)); }
// // Summary: // Called when the visitor visits a OperatorMemberCrefSyntax node. public virtual void VisitOperatorMemberCref(OperatorMemberCrefSyntax node);