public override void VisitSimpleType(SimpleType simpleType)
        {
            var identifierToken = simpleType.IdentifierToken;

            VisitChildrenUntil(simpleType, identifierToken);
            Colorize(identifierToken, resolver.Resolve(simpleType, cancellationToken));
            VisitChildrenAfter(simpleType, identifierToken);
        }
 void VisitVisibleNodes(AstNode node, IResolveVisitorNavigator currentNavigator, AlAstResolver resolver, int start, int end)
 {
     if (!AlAstResolver.IsUnresolvableNode(node))
     {
         currentNavigator.Resolved(node, resolver.Resolve(node));
     }
     for (var child = node.FirstChild; child != null; child = child.NextSibling)
     {
         if (child.StartLocation.Line <= end && child.EndLocation.Line >= start)
         {
             VisitVisibleNodes(child, currentNavigator, resolver, start, end);
         }
     }
 }
Esempio n. 3
0
		public ResolveResult ResolveSnippet(ParseInformation parseInfo, TextLocation location, string codeSnippet, ICompilation compilation, CancellationToken cancellationToken)
		{
			var csParseInfo = parseInfo as AlFullParseInformation;
			if (csParseInfo == null)
				throw new ArgumentException("Parse info does not have SyntaxTree");
			AlAstResolver contextResolver = new AlAstResolver(compilation, csParseInfo.SyntaxTree, csParseInfo.UnresolvedFile);
			var node = csParseInfo.SyntaxTree.GetNodeAt(location);
			AlResolver context;
			if (node != null)
				context = contextResolver.GetResolverStateAfter(node, cancellationToken);
			else
				context = new AlResolver(compilation);
			AlParser parser = new AlParser();
			var expr = parser.ParseExpression(codeSnippet);
			if (parser.HasErrors)
				return new ErrorResolveResult(SpecialType.UnknownType, PrintErrorsAsString(parser.Errors), TextLocation.Empty);
			AlAstResolver snippetResolver = new AlAstResolver(context, expr);
			return snippetResolver.Resolve(expr, cancellationToken);
		}