@@ -24,20 +24,6 @@ public class RubberduckParser : IRubberduckParser
2424 {
2525 private readonly ReferencedDeclarationsCollector _comReflector ;
2626
27- private readonly IParseTreeListener [ ] listeners = new IParseTreeListener [ ]
28- {
29- new ObsoleteCallStatementListener ( ) ,
30- new ObsoleteLetStatementListener ( ) ,
31- new EmptyStringLiteralListener ( ) ,
32- new ArgListWithOneByRefParamListener ( ) ,
33- new CommentListener ( ) ,
34- } ;
35-
36- private readonly VBE _vbe ;
37- private readonly RubberduckParserState _state ;
38- private readonly IAttributeParser _attributeParser ;
39- public RubberduckParserState State { get { return _state ; } }
40-
4127 public RubberduckParser ( VBE vbe , RubberduckParserState state , IAttributeParser attributeParser )
4228 {
4329 _vbe = vbe ;
@@ -52,21 +38,17 @@ public RubberduckParser(VBE vbe, RubberduckParserState state, IAttributeParser a
5238
5339 private void ReparseRequested ( object sender , EventArgs e )
5440 {
55- var args = e as ParseRequestEventArgs ;
56- if ( args . IsFullReparseRequest )
57- {
58- // cancel currently running parsing processes...
59- Task . Run ( ( ) => ParseInternal ( ) ) ;
60- }
61- else
62- {
63- ParseAsync ( args . Component , CancellationToken . None , _state . GetRewriter ( args . Component ) ) ;
64- }
41+ Task . Run ( ( ) => ParseInternal ( ) ) ;
6542 }
6643
44+ private readonly VBE _vbe ;
45+ private readonly RubberduckParserState _state ;
46+ private readonly IAttributeParser _attributeParser ;
47+ public RubberduckParserState State { get { return _state ; } }
48+
6749 /// <summary>
6850 /// This method is not part of the interface and should only be used for testing.
69- /// Request a reparse using <cref> RubberduckParserState.ParseRequest</cref> instead.
51+ /// Request a reparse using RubberduckParserState.OnParseRequested instead.
7052 /// </summary>
7153 public void Parse ( )
7254 {
@@ -147,7 +129,8 @@ private void AddDeclarationsFromProjectReferences(IReadOnlyList<VBProject> proje
147129 var references = projects
148130 . SelectMany ( project => project . References . Cast < Reference > ( ) )
149131 . DistinctBy ( reference => reference . Guid )
150- . Where ( reference => reference . Type == vbext_RefKind . vbext_rk_TypeLib ) ;
132+ . Where ( reference => reference . Type == vbext_RefKind . vbext_rk_TypeLib )
133+ . ToList ( ) ;
151134 foreach ( var reference in references )
152135 {
153136 AddDeclarationsFromReference ( reference ) ;
@@ -171,15 +154,9 @@ private void SetComponentsState(IEnumerable<VBComponent> components, ParserState
171154 }
172155 }
173156
174-
175- public Task ParseAsync ( VBComponent component , CancellationToken token , TokenStreamRewriter rewriter = null )
176- {
177- return Task . Run ( ( ) => ParseComponent ( component , rewriter ) , token ) ;
178- }
179-
180-
181157 public void ParseComponent ( VBComponent vbComponent , TokenStreamRewriter rewriter = null )
182158 {
159+ var component = vbComponent ;
183160 State . SetModuleState ( vbComponent , ParserState . Parsing ) ;
184161
185162 try
@@ -195,10 +172,25 @@ public void ParseComponent(VBComponent vbComponent, TokenStreamRewriter rewriter
195172 }
196173 catch ( VBAPreprocessorException )
197174 {
198- Debug . Print ( "Falling back to no preprocessing" ) ;
175+ // Fall back to not doing any preprocessing at all.
199176 preprocessedModuleBody = code ;
200177 }
201178
179+ var obsoleteCallsListener = new ObsoleteCallStatementListener ( ) ;
180+ var obsoleteLetListener = new ObsoleteLetStatementListener ( ) ;
181+ var emptyStringLiteralListener = new EmptyStringLiteralListener ( ) ;
182+ var argListsWithOneByRefParam = new ArgListWithOneByRefParamListener ( ) ;
183+ var commentListener = new CommentListener ( ) ;
184+
185+ var listeners = new IParseTreeListener [ ]
186+ {
187+ obsoleteCallsListener ,
188+ obsoleteLetListener ,
189+ emptyStringLiteralListener ,
190+ argListsWithOneByRefParam ,
191+ commentListener
192+ } ;
193+
202194 DeclarationSymbolsListener listener ;
203195 var tree = GetParseTree ( vbComponent , listeners , preprocessedModuleBody , qualifiedName , out listener ) ;
204196 WalkParseTree ( listeners , qualifiedName , tree , listener ) ;
@@ -207,13 +199,13 @@ public void ParseComponent(VBComponent vbComponent, TokenStreamRewriter rewriter
207199 }
208200 catch ( COMException exception )
209201 {
210- State . SetModuleState ( vbComponent , ParserState . Error ) ;
202+ State . SetModuleState ( component , ParserState . Error ) ;
211203 Debug . WriteLine ( "Exception thrown in thread {0}:\n {1}" , Thread . CurrentThread . ManagedThreadId , exception ) ;
212204 }
213205 catch ( SyntaxErrorException exception )
214206 {
215207 Debug . WriteLine ( "Exception thrown in thread {0}:\n {1}" , Thread . CurrentThread . ManagedThreadId , exception ) ;
216- State . SetModuleState ( vbComponent , ParserState . Error , exception ) ;
208+ State . SetModuleState ( component , ParserState . Error , exception ) ;
217209 }
218210 catch ( OperationCanceledException exception )
219211 {
@@ -369,17 +361,17 @@ private ParserState WalkParseTree(VBComponent component, IParseTree tree, Declar
369361 return ParserState . Ready ;
370362 }
371363
372- public void Resolve ( CancellationToken token )
364+ public Task ParseAsync ( VBComponent component , CancellationToken token , TokenStreamRewriter rewriter = null )
373365 {
374366 throw new NotImplementedException ( ) ;
375367 }
376368
377- public Task ParseAsync ( VBComponent component , TokenStreamRewriter rewriter = null )
369+ public void Cancel ( VBComponent component = null )
378370 {
379371 throw new NotImplementedException ( ) ;
380372 }
381373
382- public void Cancel ( VBComponent component = null )
374+ public void Resolve ( CancellationToken token )
383375 {
384376 throw new NotImplementedException ( ) ;
385377 }
0 commit comments