C# 클래스 ICSharpCode.NRefactory.CSharp.Resolver.DetectSkippableNodesNavigator

When an IResolveVisitorNavigator is searching for specific nodes (e.g. all IdentifierExpressions), it has to scan the whole syntax tree for those nodes. However, scanning in the ResolveVisitor is expensive (e.g. any lambda that is scanned must be resolved), so it makes sense to detect when a whole subtree is scan-only, and skip that tree instead. The DetectSkippableNodesNavigator performs this job by running the input IResolveVisitorNavigator over the whole AST, and detecting subtrees that are scan-only, and replaces them with Skip.
상속: IResolveVisitorNavigator
파일 보기 프로젝트 열기: 0xd4d/NRefactory 1 사용 예제들

공개 메소드들

메소드 설명
DetectSkippableNodesNavigator ( IResolveVisitorNavigator navigator, AstNode root ) : System.Collections.Generic
ProcessConversion ( Expression expression, ResolveResult result, Conversion conversion, IType targetType ) : void
Resolved ( AstNode node, ResolveResult result ) : void
Scan ( AstNode node ) : ResolveVisitorNavigationMode

비공개 메소드들

메소드 설명
Init ( AstNode node ) : bool

메소드 상세

DetectSkippableNodesNavigator() 공개 메소드

public DetectSkippableNodesNavigator ( IResolveVisitorNavigator navigator, AstNode root ) : System.Collections.Generic
navigator IResolveVisitorNavigator
root AstNode
리턴 System.Collections.Generic

ProcessConversion() 공개 메소드

public ProcessConversion ( Expression expression, ResolveResult result, Conversion conversion, IType targetType ) : void
expression Expression
result ResolveResult
conversion Conversion
targetType IType
리턴 void

Resolved() 공개 메소드

public Resolved ( AstNode node, ResolveResult result ) : void
node AstNode
result ResolveResult
리턴 void

Scan() 공개 메소드

public Scan ( AstNode node ) : ResolveVisitorNavigationMode
node AstNode
리턴 ResolveVisitorNavigationMode