Ejemplo n.º 1
0
        public ResolveResult ResolveSnippet(ParseInformation parseInfo, TextLocation location, string codeSnippet, ICompilation compilation, CancellationToken cancellationToken)
        {
            var csParseInfo = parseInfo as CSharpFullParseInformation;

            if (csParseInfo == null)
            {
                throw new ArgumentException("Parse info does not have SyntaxTree");
            }
            CSharpAstResolver contextResolver = new CSharpAstResolver(compilation, csParseInfo.SyntaxTree, csParseInfo.UnresolvedFile);
            var            node = csParseInfo.SyntaxTree.GetNodeAt(location);
            CSharpResolver context;

            if (node != null)
            {
                context = contextResolver.GetResolverStateAfter(node, cancellationToken);
            }
            else
            {
                context = new CSharpResolver(compilation);
            }
            CSharpParser parser = new CSharpParser();
            var          expr   = parser.ParseExpression(codeSnippet);

            if (parser.HasErrors)
            {
                return(new ErrorResolveResult(SpecialType.UnknownType, PrintErrorsAsString(parser.Errors), TextLocation.Empty));
            }
            CSharpAstResolver snippetResolver = new CSharpAstResolver(context, expr);

            return(snippetResolver.Resolve(expr, cancellationToken));
        }
        static ResolveResult ResolveSnippet(string fileName, TextLocation location, string contextCode, string codeSnippet, ICompilation compilation)
        {
            CSharpParser      contextParser   = new CSharpParser();
            var               cu              = contextParser.Parse(contextCode, fileName);
            CSharpAstResolver contextResolver = new CSharpAstResolver(compilation, cu);
            var               node            = cu.GetNodeAt(location);
            CSharpResolver    context;

            if (node != null)
            {
                context = contextResolver.GetResolverStateAfter(node, CancellationToken.None);
            }
            else
            {
                context = new CSharpResolver(compilation);
            }
            CSharpParser parser = new CSharpParser();
            var          expr   = parser.ParseExpression(codeSnippet);

            Assert.IsFalse(parser.HasErrors);
            CSharpAstResolver snippetResolver = new CSharpAstResolver(context, expr);

            return(snippetResolver.Resolve(expr, CancellationToken.None));
        }
Ejemplo n.º 3
0
 public CSharpResolver GetResolverStateAfter(AstNode node)
 {
     return(resolver.GetResolverStateAfter(node, cancellationToken));
 }