Esempio n. 1
0
        public static string FindScopeName(SyntaxTranslation syntax, SemanticModel semanticModel = null)
        {
            if (semanticModel == null)
            {
                semanticModel = syntax.GetSemanticModel();
            }

            var    symbolInfo     = semanticModel.GetSymbolInfo(syntax.Syntax);
            string foundNsName    = null;
            var    foundClssOrStr = (TypeDeclarationTranslation)syntax.TravelUpNotMe(f => f is ClassDeclarationTranslation || f is StructDeclarationTranslation);

            if (foundClssOrStr != null)
            {
                var clssSemanticModel = foundClssOrStr.GetSemanticModel();
                var clssOrStrSymbol   = clssSemanticModel.GetDeclaredSymbol(foundClssOrStr.Syntax);
                if (clssOrStrSymbol != null)
                {
                    foundNsName = Helper.GetPrefixName(clssOrStrSymbol);
                }
            }

            if (foundNsName == null)
            {
                if (symbolInfo.Symbol.Kind == SymbolKind.Namespace)
                {
                    return(null);
                }
                var foundNs = (NamespaceDeclarationTranslation)syntax.TravelUpNotMe(f => f is NamespaceDeclarationTranslation);
                foundNsName = foundNs.Name.Translate();
            }

            return(foundNsName);
        }
Esempio n. 2
0
        public static string GetPrefix(SyntaxTranslation syntax, SemanticModel semanticModel = null)
        {
            if (semanticModel == null)
            {
                semanticModel = syntax.GetSemanticModel();
            }
            var    symbolInfo  = semanticModel.GetSymbolInfo(syntax.Syntax);
            string foundNsName = FindScopeName(syntax, semanticModel);


            if (foundNsName != null)
            {
                string namespaceName = Helper.GetPrefixName(symbolInfo.Symbol);
                string common        = Helper.FindCommonPrefix(namespaceName, foundNsName);

                string dot = string.IsNullOrEmpty(common) ? "" : ".";
                return($"{common}{dot}");
            }
            return(null);
        }