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 ApplyThis(SemanticModel semanticModel, SyntaxTranslation syntaxTranslation, string property)
        {
            SymbolInfo symbolInfo = semanticModel.GetSymbolInfo(syntaxTranslation.Syntax);
            var        found      = (TypeDeclarationTranslation)syntaxTranslation.TravelUpNotMe(f => f is TypeDeclarationTranslation);

            if (found != null)
            {
                var classSymbol = semanticModel.GetDeclaredSymbol(found.Syntax) as INamedTypeSymbol;
                if (classSymbol != null && IsEqualOrBaseOf(symbolInfo.Symbol.ContainingType, classSymbol))
                {
                    string prefixName = symbolInfo.Symbol.IsStatic ? classSymbol.Name : "this";
                    return($"{prefixName}.{property}");
                }
            }
            return(null);
        }