Ejemplo n.º 1
0
 public static ImmutableArray <Symbol> BindCref(
     this Microsoft.CodeAnalysis.CSharp.Binder binder,
     CrefSyntax syntax,
     out Symbol ambiguityWinner,
     DiagnosticBag diagnostics
     )
 {
     return(binder.BindCref(
                syntax,
                out ambiguityWinner,
                new Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag(diagnostics)
                ));
 }
Ejemplo n.º 2
0
 internal static ImmutableArray<Symbol> BindCref(CrefSyntax crefSyntax, Binder binder)
 {
     var unusedDiagnostics = DiagnosticBag.GetInstance();
     Symbol unusedAmbiguityWinner;
     var symbols = binder.BindCref(crefSyntax, out unusedAmbiguityWinner, unusedDiagnostics);
     unusedDiagnostics.Free();
     return symbols;
 }
        /// <summary>
        /// Bind a CrefSyntax and unwrap the result if it's an alias.
        /// </summary>
        /// <remarks>
        /// Does not respect DocumentationMode, so use a temporary bag if diagnostics are not desired.
        /// </remarks>
        private static string GetDocumentationCommentId(CrefSyntax crefSyntax, Binder binder, DiagnosticBag diagnostics)
        {
            if (crefSyntax.ContainsDiagnostics)
            {
                return ToBadCrefString(crefSyntax);
            }

            Symbol ambiguityWinner;
            ImmutableArray<Symbol> symbols = binder.BindCref(crefSyntax, out ambiguityWinner, diagnostics);

            Symbol symbol;
            switch (symbols.Length)
            {
                case 0:
                    return ToBadCrefString(crefSyntax);
                case 1:
                    symbol = symbols[0];
                    break;
                default:
                    symbol = ambiguityWinner;
                    Debug.Assert((object)symbol != null);
                    break;
            }

            if (symbol.Kind == SymbolKind.Alias)
            {
                symbol = ((AliasSymbol)symbol).GetAliasTarget(basesBeingResolved: null);
            }

            return symbol.OriginalDefinition.GetDocumentationCommentId();
        }