public override void Visit(BlockStmt blockStatement) { var oldBlock = _block; _block = new ScopeSymbol(_block, blockStatement); oldBlock.Symbols.Add(_block); base.Visit(blockStatement); _block = oldBlock; }
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; }
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); }
public LocalVariableDeclarationVisitor(ILogger logger, ScopeSymbol rootBlock) { // TODO support cancellation _logger = logger; _block = rootBlock; }
public IEnumerable <DocumentSymbol> Visit(ScopeSymbol scopeSymbol) { return(scopeSymbol.Children.SelectMany(Visit)); }