public override Evaluation VisitConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax node) { node.Parameters?.Accept <Evaluation>(this); node.Type?.Accept <Evaluation>(this); return(base.VisitConversionOperatorMemberCref(node)); }
public override void VisitConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax node) { node.Parameters?.Accept(this); node.Type?.Accept(this); base.VisitConversionOperatorMemberCref(node); }
// NOTE: not guaranteed to be a method (e.g. class op_Implicit) private ImmutableArray <Symbol> BindConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax syntax, NamespaceOrTypeSymbol?containerOpt, out Symbol?ambiguityWinner, BindingDiagnosticBag diagnostics) { const int arity = 0; bool isChecked = syntax.CheckedKeyword.IsKind(SyntaxKind.CheckedKeyword); string memberName; if (syntax.ImplicitOrExplicitKeyword.Kind() == SyntaxKind.ImplicitKeyword) { if (isChecked) { // checked form is not supported ambiguityWinner = null; return(ImmutableArray <Symbol> .Empty); } memberName = WellKnownMemberNames.ImplicitConversionName; } else if (isChecked) { memberName = WellKnownMemberNames.CheckedExplicitConversionName; } else { memberName = WellKnownMemberNames.ExplicitConversionName; } ImmutableArray <Symbol> sortedSymbols = ComputeSortedCrefMembers(syntax, containerOpt, memberName, arity, syntax.Parameters != null, diagnostics); if (sortedSymbols.IsEmpty) { ambiguityWinner = null; return(ImmutableArray <Symbol> .Empty); } TypeSymbol returnType = BindCrefParameterOrReturnType(syntax.Type, syntax, diagnostics); // Filter out methods with the wrong return type, since overload resolution won't catch these. sortedSymbols = sortedSymbols.WhereAsArray((symbol, returnType) => symbol.Kind != SymbolKind.Method || TypeSymbol.Equals(((MethodSymbol)symbol).ReturnType, returnType, TypeCompareKind.ConsiderEverything2), returnType); if (!sortedSymbols.Any()) { ambiguityWinner = null; return(ImmutableArray <Symbol> .Empty); } return(ProcessCrefMemberLookupResults( sortedSymbols, arity, syntax, typeArgumentListSyntax: null, parameterListSyntax: syntax.Parameters, ambiguityWinner: out ambiguityWinner, diagnostics: diagnostics)); }
public override void VisitConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax node) { if (!PreVisit(node)) { return; } node.Parameters?.Accept(this); node.Type?.Accept(this); base.VisitConversionOperatorMemberCref(node); PostVisit(node); }
// NOTE: not guaranteed to be a method (e.g. class op_Implicit) private ImmutableArray <Symbol> BindConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax syntax, NamespaceOrTypeSymbol containerOpt, out Symbol ambiguityWinner, DiagnosticBag diagnostics) { const int arity = 0; string memberName = syntax.ImplicitOrExplicitKeyword.Kind() == SyntaxKind.ImplicitKeyword ? WellKnownMemberNames.ImplicitConversionName : WellKnownMemberNames.ExplicitConversionName; ImmutableArray <Symbol> sortedSymbols = ComputeSortedCrefMembers(syntax, containerOpt, memberName, arity, syntax.Parameters != null, diagnostics); if (sortedSymbols.IsEmpty) { ambiguityWinner = null; return(ImmutableArray <Symbol> .Empty); } TypeSymbol returnType = BindCrefParameterOrReturnType(syntax.Type, syntax, diagnostics); // Filter out methods with the wrong return type, since overload resolution won't catch these. sortedSymbols = sortedSymbols.WhereAsArray(symbol => symbol.Kind != SymbolKind.Method || ((MethodSymbol)symbol).ReturnType.TypeSymbol == returnType); if (!sortedSymbols.Any()) { ambiguityWinner = null; return(ImmutableArray <Symbol> .Empty); } return(ProcessCrefMemberLookupResults( sortedSymbols, arity, syntax, typeArgumentListSyntax: null, parameterListSyntax: syntax.Parameters, ambiguityWinner: out ambiguityWinner, diagnostics: diagnostics)); }
public override void VisitConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax node) { Debug.Fail(node.ToString()); base.VisitConversionOperatorMemberCref(node); }
// NOTE: not guaranteed to be a method (e.g. class op_Implicit) private ImmutableArray<Symbol> BindConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax syntax, NamespaceOrTypeSymbol containerOpt, out Symbol ambiguityWinner, DiagnosticBag diagnostics) { const int arity = 0; string memberName = syntax.ImplicitOrExplicitKeyword.CSharpKind() == SyntaxKind.ImplicitKeyword ? WellKnownMemberNames.ImplicitConversionName : WellKnownMemberNames.ExplicitConversionName; ImmutableArray<Symbol> sortedSymbols = ComputeSortedCrefMembers(syntax, containerOpt, memberName, arity, syntax.Parameters != null, diagnostics); if (sortedSymbols.IsEmpty) { ambiguityWinner = null; return ImmutableArray<Symbol>.Empty; } TypeSymbol returnType = BindCrefParameterOrReturnType(syntax.Type, syntax, diagnostics); // Filter out methods with the wrong return type, since overload resolution won't catch these. sortedSymbols = sortedSymbols.WhereAsArray(symbol => symbol.Kind != SymbolKind.Method || ((MethodSymbol)symbol).ReturnType == returnType); if (!sortedSymbols.Any()) { ambiguityWinner = null; return ImmutableArray<Symbol>.Empty; } return ProcessCrefMemberLookupResults( sortedSymbols, arity, syntax, typeArgumentListSyntax: null, parameterListSyntax: syntax.Parameters, ambiguityWinner: out ambiguityWinner, diagnostics: diagnostics); }
public override SyntaxNode VisitConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax node) { node = (ConversionOperatorMemberCrefSyntax)base.VisitConversionOperatorMemberCref(node); Classes.Add(node); return(node); }
public override void VisitConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax node) { throw new NotImplementedException(); }
public override void VisitConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax node) { Log(node, "Unsupported Syntax !"); }
public override void VisitConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax node) => base.VisitConversionOperatorMemberCref(node);
public TameConversionOperatorMemberCrefSyntax(ConversionOperatorMemberCrefSyntax node) { Node = node; AddChildren(); }
/// <summary> /// /// </summary> /// <param name="node"></param> public override sealed void VisitConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax node) { this.OnNodeVisited(node, this.type.IsInstanceOfType(node)); base.VisitConversionOperatorMemberCref(node); }
/// <summary> /// /// </summary> /// <param name="node"></param> public override sealed void VisitConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax node) { this.OnNodeVisited(node); if (!this.traverseRootOnly) base.VisitConversionOperatorMemberCref(node); }
// // Summary: // Called when the visitor visits a ConversionOperatorMemberCrefSyntax node. public virtual void VisitConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax node);