Skip to content

Commit 52135ae

Browse files
committed
reinstated built-in declarations (COM reflection)
1 parent ac44e4c commit 52135ae

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

Rubberduck.Parsing/VBA/RubberduckParser.cs

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,26 +69,39 @@ private void StateOnStateChanged(object sender, EventArgs e)
6969
}
7070
}
7171

72-
private void ReparseRequested(object sender, EventArgs e)
72+
private void ReparseRequested(object sender, ParseRequestEventArgs e)
7373
{
74-
var args = e as ParseRequestEventArgs;
75-
if (args.IsFullReparseRequest)
74+
if (e.IsFullReparseRequest)
7675
{
7776
Cancel();
7877
ParseAll();
7978
}
8079
else
8180
{
82-
Cancel(args.Component);
83-
ParseAsync(args.Component, CancellationToken.None);
81+
Cancel(e.Component);
82+
ParseAsync(e.Component, CancellationToken.None);
8483
}
8584
}
8685

8786
public void Parse()
8887
{
8988
var projects = _vbe.VBProjects
9089
.Cast<VBProject>()
91-
.Where(project => project.Protection == vbext_ProjectProtection.vbext_pp_none);
90+
.Where(project => project.Protection == vbext_ProjectProtection.vbext_pp_none)
91+
.ToList();
92+
93+
if (!_state.AllDeclarations.Any(item => item.IsBuiltIn))
94+
{
95+
var references = projects.SelectMany(p => p.References.Cast<Reference>()).ToList();
96+
foreach (var reference in references)
97+
{
98+
var items = _comReflector.GetDeclarationsForReference(reference);
99+
foreach (var declaration in items)
100+
{
101+
_state.AddDeclaration(declaration);
102+
}
103+
}
104+
}
92105

93106
var components = projects.SelectMany(p => p.VBComponents.Cast<VBComponent>()).ToList();
94107
foreach (var component in components)
@@ -118,7 +131,21 @@ private void ParseAll()
118131
{
119132
var projects = _vbe.VBProjects
120133
.Cast<VBProject>()
121-
.Where(project => project.Protection == vbext_ProjectProtection.vbext_pp_none);
134+
.Where(project => project.Protection == vbext_ProjectProtection.vbext_pp_none)
135+
.ToList();
136+
137+
if (!_state.AllDeclarations.Any(item => item.IsBuiltIn))
138+
{
139+
var references = projects.SelectMany(p => p.References.Cast<Reference>()).ToList();
140+
foreach (var reference in references)
141+
{
142+
var items = _comReflector.GetDeclarationsForReference(reference);
143+
foreach (var declaration in items)
144+
{
145+
_state.AddDeclaration(declaration);
146+
}
147+
}
148+
}
122149

123150
var components = projects.SelectMany(p => p.VBComponents.Cast<VBComponent>()).ToList();
124151
foreach (var component in components)

0 commit comments

Comments
 (0)