Skip to content

Commit dc671b5

Browse files
authored
Merge pull request #3991 from mansellan/3951
Handle nameless parameters in referenced COM libraries.
2 parents 1da16b1 + 0d77346 commit dc671b5

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

Rubberduck.Parsing/ComReflection/ComMember.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ private void LoadParameters(FUNCDESC funcDesc, ITypeInfo info)
9191
{
9292
var paramPtr = new IntPtr(funcDesc.lprgelemdescParam.ToInt64() + Marshal.SizeOf(typeof(ELEMDESC)) * index);
9393
var elemDesc = (ELEMDESC)Marshal.PtrToStructure(paramPtr, typeof(ELEMDESC));
94-
var param = new ComParameter(elemDesc, info, names[index + 1]);
94+
var param = new ComParameter(elemDesc, info, names[index + 1] ?? $"{index}unnamedParameter");
9595
Parameters.Add(param);
9696
}
9797
if (Parameters.Any() && funcDesc.cParamsOpt == -1)

Rubberduck.Parsing/ComReflection/ComParameter.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ public string TypeName
5656

5757
public ComParameter(ELEMDESC elemDesc, ITypeInfo info, string name)
5858
{
59+
Debug.Assert(name != null, "Parameter name is null");
60+
5961
Name = name;
6062
var paramDesc = elemDesc.desc.paramdesc;
6163
GetParameterType(elemDesc.tdesc, info);

Rubberduck.Parsing/VBA/COMReferenceSynchronizerBase.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,12 @@ private string GetReferenceProjectId(IReference reference, IReadOnlyList<IVBProj
175175

176176
protected void LoadReference(IReference localReference, ConcurrentBag<IReference> unmapped)
177177
{
178-
Logger.Trace(string.Format("Loading referenced type '{0}'.", localReference.Name));
178+
if (Thread.CurrentThread.IsBackground && Thread.CurrentThread.Name == null)
179+
{
180+
Thread.CurrentThread.Name = $"LoadReference '{localReference.Name}'";
181+
}
182+
183+
Logger.Trace(string.Format("Loading referenced type '{0}'.", localReference.Name));
179184
var comReflector = new ReferencedDeclarationsCollector(_state, localReference, _serializedDeclarationsPath);
180185
try
181186
{

0 commit comments

Comments
 (0)