Skip to content

Commit 2ff841c

Browse files
authored
Merge pull request #2692 from comintern/next
Add isThreadSafe parameter for Lazy<T>s in DeclarationFinder
2 parents 6cc637e + 8f1041e commit 2ff841c

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

Rubberduck.Parsing/Symbols/DeclarationFinder.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ public DeclarationFinder(IReadOnlyList<Declaration> declarations, IEnumerable<IA
6363
_parametersByParent = declarations.Where(declaration => declaration.DeclarationType == DeclarationType.Parameter)
6464
.GroupBy(declaration => declaration.ParentDeclaration).ToConcurrentDictionary();
6565
_userDeclarationsByType = declarations.Where(declaration => !declaration.IsBuiltIn).GroupBy(declaration => declaration.DeclarationType).ToConcurrentDictionary();
66-
_builtinEvents = new Lazy<ConcurrentBag<Declaration>>(() => FindBuiltInEventHandlers(declarations));
66+
_builtinEvents = new Lazy<ConcurrentBag<Declaration>>(() => FindBuiltInEventHandlers(declarations), true);
6767

68-
_projects = _projects = new Lazy<ConcurrentBag<Declaration>>(() => new ConcurrentBag<Declaration>(declarations.Where(d => d.DeclarationType == DeclarationType.Project)));
69-
_classes = new Lazy<ConcurrentBag<Declaration>>(() => new ConcurrentBag<Declaration>(declarations.Where(d => d.DeclarationType == DeclarationType.ClassModule)));
68+
_projects = _projects = new Lazy<ConcurrentBag<Declaration>>(() => new ConcurrentBag<Declaration>(declarations.Where(d => d.DeclarationType == DeclarationType.Project)), true);
69+
_classes = new Lazy<ConcurrentBag<Declaration>>(() => new ConcurrentBag<Declaration>(declarations.Where(d => d.DeclarationType == DeclarationType.ClassModule)), true);
7070

7171
var withEventsFields = UserDeclarations(DeclarationType.Variable).Where(item => item.IsWithEvents).ToArray();
7272
var events = withEventsFields.Select(field =>
@@ -88,7 +88,7 @@ public DeclarationFinder(IReadOnlyList<Declaration> declarations, IEnumerable<IA
8888
&& member.IdentifierName == item.WithEventsField.IdentifierName + "_" + evnt.IdentifierName))
8989
})
9090
.ToDictionary(item => item.WithEventsField, item => item.Handlers.ToArray())
91-
));
91+
), true);
9292

9393
_undeclared = new ConcurrentDictionary<QualifiedMemberName, ConcurrentBag<Declaration>>(new Dictionary<QualifiedMemberName, ConcurrentBag<Declaration>>());
9494
_unresolved = new ConcurrentBag<UnboundMemberDeclaration>(new List<UnboundMemberDeclaration>());
@@ -106,12 +106,12 @@ public DeclarationFinder(IReadOnlyList<Declaration> declarations, IEnumerable<IA
106106
});
107107

108108
_interfaceMembers = new Lazy<ConcurrentDictionary<Declaration, Declaration[]>>(() =>
109-
new ConcurrentDictionary<Declaration, Declaration[]>(interfaceMembers.ToDictionary(item => item.InterfaceModule, item => item.InterfaceMembers.ToArray())));
109+
new ConcurrentDictionary<Declaration, Declaration[]>(interfaceMembers.ToDictionary(item => item.InterfaceModule, item => item.InterfaceMembers.ToArray())), true);
110110

111111
var implementingNames = new Lazy<IEnumerable<string>>(() => implementsInstructions.SelectMany(item =>
112112
_declarations[item.IdentifierReference.Declaration.QualifiedName.QualifiedModuleName]
113113
.Where(member => member.DeclarationType.HasFlag(DeclarationType.Member))
114-
.Select(member => item.IdentifierReference.Declaration.IdentifierName + "_" + member.IdentifierName)));
114+
.Select(member => item.IdentifierReference.Declaration.IdentifierName + "_" + member.IdentifierName)), true);
115115

116116
var implementableMembers = implementsInstructions.Select(item =>
117117
new
@@ -123,7 +123,7 @@ public DeclarationFinder(IReadOnlyList<Declaration> declarations, IEnumerable<IA
123123

124124
_membersByImplementsContext = new Lazy<ConcurrentDictionary<VBAParser.ImplementsStmtContext, Declaration[]>>(() =>
125125
new ConcurrentDictionary<VBAParser.ImplementsStmtContext, Declaration[]>(
126-
implementableMembers.ToDictionary(item => item.Context, item => item.Members)));
126+
implementableMembers.ToDictionary(item => item.Context, item => item.Members)), true);
127127
}
128128

129129
public IEnumerable<Declaration> Undeclared

0 commit comments

Comments
 (0)