Exemplo n.º 1
0
        /// <inheritdoc/>
        public override SyntaxNode?VisitNameMemberCref(NameMemberCrefSyntax node)
        {
            SymbolInfo info = SemanticModel.GetSymbolInfo(node);

            if (info.Symbol is not INamedTypeSymbol symbol)
            {
                return(base.VisitNameMemberCref(node));
            }

            string[] namespaces = symbol.GetContainingNamespacesAndTypes().Select(n => n.Name).ToArray();

            if (namespaces.Length == 0)
            {
                return(base.VisitNameMemberCref(node));
            }
            else if (namespaces.Length == 1)
            {
                return(QualifiedCref(IdentifierName(namespaces[0]), node.WithoutTrivia()).WithTriviaFrom(node));
            }
            else
            {
                return(QualifiedCref(AnalysisUtilities.JoinIntoQualifiedName(namespaces) !, node.WithoutTrivia()).WithTriviaFrom(node));
            }
        }