Skip to content

Commit eaea7cc

Browse files
committed
fixed a few bugs in GetReferenceProjectId. Failing tests: 0.
1 parent 05073a0 commit eaea7cc

File tree

4 files changed

+25
-17
lines changed

4 files changed

+25
-17
lines changed

Rubberduck.Parsing/Binding/SimpleNameDefaultBinding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public IBoundExpression Resolve()
7070

7171
var undeclaredLocal = _declarationFinder.OnUndeclaredVariable(_parent, _name, _context);
7272
return new SimpleNameExpression(undeclaredLocal, ExpressionClassification.Variable, _context);
73-
return new ResolutionFailedExpression();
73+
//return new ResolutionFailedExpression();
7474
}
7575

7676
private IBoundExpression ResolveProcedureNamespace()

Rubberduck.Parsing/Binding/SimpleNameTypeBinding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public SimpleNameTypeBinding(
2929

3030
public IBoundExpression Resolve()
3131
{
32-
string name = Identifier.GetName(_expression.identifier());
32+
var name = Identifier.GetName(_expression.identifier());
3333
if (PreferProjectOverUdt)
3434
{
3535
return ResolvePreferProject(name);

Rubberduck.Parsing/VBA/RubberduckParser.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
using System.Linq;
1414
using NLog;
1515
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
16-
using Rubberduck.VBEditor.SafeComWrappers.VBA;
1716
using System.Runtime.InteropServices;
1817
// ReSharper disable LoopCanBeConvertedToQuery
1918

@@ -352,9 +351,11 @@ private string GetReferenceProjectId(IReference reference, IReadOnlyList<IVBProj
352351
{
353352
try
354353
{
355-
if (item.FileName == reference.FullPath)
354+
// check the name not just the path, because path is empty in tests:
355+
if (item.Name == reference.Name && item.FileName == reference.FullPath)
356356
{
357357
project = item;
358+
break;
358359
}
359360
}
360361
catch (IOException)
@@ -369,7 +370,11 @@ private string GetReferenceProjectId(IReference reference, IReadOnlyList<IVBProj
369370

370371
if (project != null)
371372
{
372-
project.AssignProjectId();
373+
if (string.IsNullOrEmpty(project.ProjectId))
374+
{
375+
project.AssignProjectId();
376+
}
377+
return project.ProjectId;
373378
}
374379
return QualifiedModuleName.GetProjectId(reference);
375380
}
@@ -477,7 +482,7 @@ private void UnloadComReference(IReference reference, IReadOnlyList<IVBProject>
477482
if (map == null || !map.IsLoaded)
478483
{
479484
// we're removing a reference we weren't tracking? ...this shouldn't happen.
480-
Debug.Assert(false);
485+
//Debug.Assert(false);
481486
return;
482487
}
483488
map.Remove(referencedProjectId);

RubberduckTests/Binding/SimpleNameTypeBindingTests.cs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class SimpleNameTypeBindingTests
1818
{
1919
private const string BINDING_TARGET_NAME = "BindingTarget";
2020
private const string TEST_CLASS_NAME = "TestClass";
21-
private const string REFERENCED_PROJECT_FILEPATH = @"C:\Temp\ReferencedProjectA";
21+
private static readonly string ReferencedProjectFilepath = string.Empty; // must be an empty string
2222

2323
[TestMethod]
2424
public void EnclosingModuleComesBeforeEnclosingProject()
@@ -60,13 +60,13 @@ public void OtherModuleInEnclosingProjectComesBeforeReferencedProjectModule()
6060
var builder = new MockVbeBuilder();
6161
const string REFERENCED_PROJECT_NAME = "AnyReferencedProjectName";
6262

63-
var referencedProjectBuilder = builder.ProjectBuilder(REFERENCED_PROJECT_NAME, REFERENCED_PROJECT_FILEPATH, ProjectProtection.Unprotected);
63+
var referencedProjectBuilder = builder.ProjectBuilder(REFERENCED_PROJECT_NAME, ReferencedProjectFilepath, ProjectProtection.Unprotected);
6464
referencedProjectBuilder.AddComponent(BINDING_TARGET_NAME, ComponentType.ClassModule, string.Empty);
6565
var referencedProject = referencedProjectBuilder.Build();
6666
builder.AddProject(referencedProject);
6767

6868
var enclosingProjectBuilder = builder.ProjectBuilder("AnyProjectName", ProjectProtection.Unprotected);
69-
enclosingProjectBuilder.AddReference(REFERENCED_PROJECT_NAME, REFERENCED_PROJECT_FILEPATH);
69+
enclosingProjectBuilder.AddReference(REFERENCED_PROJECT_NAME, ReferencedProjectFilepath);
7070
enclosingProjectBuilder.AddComponent(TEST_CLASS_NAME, ComponentType.ClassModule, "Public WithEvents anything As " + BINDING_TARGET_NAME);
7171
enclosingProjectBuilder.AddComponent("AnyModule", ComponentType.StandardModule, CreateEnumType(BINDING_TARGET_NAME));
7272
var enclosingProject = enclosingProjectBuilder.Build();
@@ -86,13 +86,13 @@ public void ReferencedProjectModuleComesBeforeReferencedProjectType()
8686
var builder = new MockVbeBuilder();
8787
const string REFERENCED_PROJECT_NAME = "AnyReferencedProjectName";
8888

89-
var referencedProjectBuilder = builder.ProjectBuilder(REFERENCED_PROJECT_NAME, REFERENCED_PROJECT_FILEPATH, ProjectProtection.Unprotected);
89+
var referencedProjectBuilder = builder.ProjectBuilder(REFERENCED_PROJECT_NAME, ReferencedProjectFilepath, ProjectProtection.Unprotected);
9090
referencedProjectBuilder.AddComponent(BINDING_TARGET_NAME, ComponentType.StandardModule, CreateEnumType(BINDING_TARGET_NAME));
9191
var referencedProject = referencedProjectBuilder.Build();
9292
builder.AddProject(referencedProject);
9393

9494
var enclosingProjectBuilder = builder.ProjectBuilder("AnyProjectName", ProjectProtection.Unprotected);
95-
enclosingProjectBuilder.AddReference(REFERENCED_PROJECT_NAME, REFERENCED_PROJECT_FILEPATH);
95+
enclosingProjectBuilder.AddReference(REFERENCED_PROJECT_NAME, ReferencedProjectFilepath);
9696
enclosingProjectBuilder.AddComponent(TEST_CLASS_NAME, ComponentType.ClassModule, "Public WithEvents anything As " + BINDING_TARGET_NAME);
9797
var enclosingProject = enclosingProjectBuilder.Build();
9898
builder.AddProject(enclosingProject);
@@ -109,16 +109,19 @@ public void ReferencedProjectModuleComesBeforeReferencedProjectType()
109109
public void ReferencedProjectType()
110110
{
111111
var builder = new MockVbeBuilder();
112-
const string REFERENCED_PROJECT_NAME = "AnyReferencedProjectName";
112+
const string referencedProjectName = "Referenced";
113+
114+
var referencedCode = CreateEnumType(BINDING_TARGET_NAME);
115+
const string enclosingCode = "Public AnyEnum As " + BINDING_TARGET_NAME;
113116

114-
var referencedProjectBuilder = builder.ProjectBuilder(REFERENCED_PROJECT_NAME, REFERENCED_PROJECT_FILEPATH, ProjectProtection.Unprotected);
115-
referencedProjectBuilder.AddComponent("AnyName", ComponentType.StandardModule, CreateEnumType(BINDING_TARGET_NAME));
117+
var referencedProjectBuilder = builder.ProjectBuilder(referencedProjectName, ReferencedProjectFilepath, ProjectProtection.Unprotected);
118+
referencedProjectBuilder.AddComponent("AnyName", ComponentType.StandardModule, referencedCode);
116119
var referencedProject = referencedProjectBuilder.Build();
117120
builder.AddProject(referencedProject);
118121

119-
var enclosingProjectBuilder = builder.ProjectBuilder("AnyProjectName", ProjectProtection.Unprotected);
120-
enclosingProjectBuilder.AddReference(REFERENCED_PROJECT_NAME, REFERENCED_PROJECT_FILEPATH);
121-
enclosingProjectBuilder.AddComponent(TEST_CLASS_NAME, ComponentType.ClassModule, "Public WithEvents anything As " + BINDING_TARGET_NAME);
122+
var enclosingProjectBuilder = builder.ProjectBuilder("Enclosing", ProjectProtection.Unprotected);
123+
enclosingProjectBuilder.AddReference(referencedProjectName, ReferencedProjectFilepath);
124+
enclosingProjectBuilder.AddComponent(TEST_CLASS_NAME, ComponentType.ClassModule, enclosingCode);
122125
var enclosingProject = enclosingProjectBuilder.Build();
123126
builder.AddProject(enclosingProject);
124127

0 commit comments

Comments
 (0)