Skip to content

Commit 8a36b99

Browse files
committed
Cache ModelElements for dynamic and Never
1 parent 6a02ffb commit 8a36b99

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

lib/src/model/model_element.dart

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -204,13 +204,6 @@ abstract class ModelElement
204204
e.kind == ElementKind.DYNAMIC ||
205205
e.kind == ElementKind.NEVER);
206206

207-
if (e.kind == ElementKind.DYNAMIC) {
208-
return Dynamic(e, packageGraph);
209-
}
210-
if (e.kind == ElementKind.NEVER) {
211-
return NeverType(e, packageGraph);
212-
}
213-
214207
Member? originalMember;
215208
// TODO(jcollins-g): Refactor object model to instantiate 'ModelMembers'
216209
// for members?
@@ -220,12 +213,21 @@ abstract class ModelElement
220213
}
221214

222215
// Return the cached ModelElement if it exists.
223-
var cachedModelElement = packageGraph.allConstructedModelElements[
224-
ConstructedModelElementsKey(e, library, enclosingContainer)];
216+
var key = ConstructedModelElementsKey(e, library, enclosingContainer);
217+
var cachedModelElement = packageGraph.allConstructedModelElements[key];
225218
if (cachedModelElement != null) {
226219
return cachedModelElement;
227220
}
228221

222+
if (e.kind == ElementKind.DYNAMIC) {
223+
return packageGraph.allConstructedModelElements[key] =
224+
Dynamic(e, packageGraph);
225+
}
226+
if (e.kind == ElementKind.NEVER) {
227+
return packageGraph.allConstructedModelElements[key] =
228+
NeverType(e, packageGraph);
229+
}
230+
229231
var newModelElement = ModelElement._constructFromElementDeclaration(
230232
e,
231233
library,

0 commit comments

Comments
 (0)