Skip to content

Commit f940c5f

Browse files
committed
Cache ModelElements for dynamic and Never
1 parent 22417c8 commit f940c5f

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

Diff for: lib/src/model/model_element.dart

+11-9
Original file line numberDiff line numberDiff line change
@@ -205,13 +205,6 @@ abstract class ModelElement
205205
e.kind == ElementKind.DYNAMIC ||
206206
e.kind == ElementKind.NEVER);
207207

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

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

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

0 commit comments

Comments
 (0)