Exemplo n.º 1
0
            public override void Visit(BlockStmt blockStatement)
            {
                var oldBlock = _block;

                _block = new ScopeSymbol(_block, blockStatement);
                oldBlock.Symbols.Add(_block);
                base.Visit(blockStatement);
                _block = oldBlock;
            }
Exemplo n.º 2
0
            private void ProcessAndRegisterMethodBody(MethodSymbol methodSymbol, BlockStmt?blockStatement)
            {
                if (blockStatement == null)
                {
                    return;
                }
                var rootBlock    = new ScopeSymbol(methodSymbol, blockStatement);
                var localVisitor = new LocalVariableDeclarationVisitor(_logger, rootBlock);

                localVisitor.Resolve(blockStatement);
                methodSymbol.Block = rootBlock;
            }
Exemplo n.º 3
0
 public Unit Visit(ScopeSymbol scopeSymbol)
 {
     _cancellationToken.ThrowIfCancellationRequested();
     RegisterLocation(
         scopeSymbol,
         scopeSymbol.Declaration.Tok,
         scopeSymbol.Declaration.Tok.GetLspRange(),
         new Range(scopeSymbol.Declaration.Tok.GetLspPosition(), scopeSymbol.Declaration.EndTok.GetLspPosition())
         );
     VisitChildren(scopeSymbol);
     return(Unit.Value);
 }
Exemplo n.º 4
0
 public LocalVariableDeclarationVisitor(ILogger logger, ScopeSymbol rootBlock)
 {
     // TODO support cancellation
     _logger = logger;
     _block  = rootBlock;
 }
Exemplo n.º 5
0
 public IEnumerable <DocumentSymbol> Visit(ScopeSymbol scopeSymbol)
 {
     return(scopeSymbol.Children.SelectMany(Visit));
 }