@@ -555,11 +555,10 @@ class ClassElementImpl extends AbstractClassElementImpl
555555 _constructors = context.getConstructors (linkedNode).map ((node) {
556556 var name = node.name? .name ?? '' ;
557557 var reference = containerRef.getChild (name);
558- if (reference.element == null ) {
559- reference.node2 = node;
560- ConstructorElementImpl .forLinkedNode (this , reference, node);
558+ if (reference.hasElementFor (node)) {
559+ return reference.element as ConstructorElement ;
561560 }
562- return reference.element as ConstructorElement ;
561+ return ConstructorElementImpl . forLinkedNode ( this , reference, node) ;
563562 }).toList ();
564563 }
565564
@@ -882,11 +881,10 @@ class ClassElementImpl extends AbstractClassElementImpl
882881 .map ((node) {
883882 var name = node.name.name;
884883 var reference = containerRef.getChild (name);
885- if (reference.element == null ) {
886- reference.node2 = node;
887- MethodElementImpl .forLinkedNode (this , reference, node);
884+ if (reference.hasElementFor (node)) {
885+ return reference.element as MethodElement ;
888886 }
889- return reference.element as MethodElement ;
887+ return MethodElementImpl . forLinkedNode ( this , reference, node) ;
890888 }).toList ();
891889 }
892890
@@ -1712,11 +1710,10 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl
17121710 _enums = linkedNode.declarations.whereType <EnumDeclaration >().map ((node) {
17131711 var name = node.name.name;
17141712 var reference = containerRef.getChild (name);
1715- if (reference.element == null ) {
1716- reference.node2 = node;
1717- EnumElementImpl .forLinkedNode (this , reference, node);
1713+ if (reference.hasElementFor (node)) {
1714+ return reference.element as EnumElementImpl ;
17181715 }
1719- return reference.element as EnumElementImpl ;
1716+ return EnumElementImpl . forLinkedNode ( this , reference, node) ;
17201717 }).toList ();
17211718 }
17221719
@@ -1750,11 +1747,10 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl
17501747 .map ((node) {
17511748 var name = node.name.name;
17521749 var reference = containerRef.getChild (name);
1753- if (reference.element == null ) {
1754- reference.node2 = node;
1755- FunctionElementImpl .forLinkedNode (this , reference, node);
1750+ if (reference.hasElementFor (node)) {
1751+ return reference.element as FunctionElementImpl ;
17561752 }
1757- return reference.element as FunctionElementImpl ;
1753+ return FunctionElementImpl . forLinkedNode ( this , reference, node) ;
17581754 }).toList ();
17591755 } else if (_unlinkedUnit != null ) {
17601756 _functions = _unlinkedUnit.executables
@@ -1792,11 +1788,10 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl
17921788 }
17931789
17941790 var reference = containerRef.getChild (name);
1795- if (reference.element == null ) {
1796- reference.node2 = node;
1797- GenericTypeAliasElementImpl .forLinkedNode (this , reference, node);
1791+ if (reference.hasElementFor (node)) {
1792+ return reference.element as GenericTypeAliasElementImpl ;
17981793 }
1799- return reference.element as GenericTypeAliasElement ;
1794+ return GenericTypeAliasElementImpl . forLinkedNode ( this , reference, node) ;
18001795 }).toList ();
18011796 }
18021797
@@ -1851,11 +1846,10 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl
18511846 return _mixins = declarations.whereType <MixinDeclaration >().map ((node) {
18521847 var name = node.name.name;
18531848 var reference = containerRef.getChild (name);
1854- if (reference.element == null ) {
1855- reference.node2 = node;
1856- MixinElementImpl .forLinkedNode (this , reference, node);
1849+ if (reference.hasElementFor (node)) {
1850+ return reference.element as MixinElementImpl ;
18571851 }
1858- return reference.element as MixinElementImpl ;
1852+ return MixinElementImpl . forLinkedNode ( this , reference, node) ;
18591853 }).toList ();
18601854 }
18611855
@@ -1954,11 +1948,13 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl
19541948 continue ;
19551949 }
19561950 var reference = containerRef.getChild (name);
1957- if (reference.element == null ) {
1958- reference.node2 = node;
1959- ClassElementImpl .forLinkedNode (this , reference, node);
1951+ if (reference.hasElementFor (node)) {
1952+ _types.add (reference.element);
1953+ } else {
1954+ _types.add (
1955+ ClassElementImpl .forLinkedNode (this , reference, node),
1956+ );
19601957 }
1961- _types.add (reference.element);
19621958 }
19631959 return _types;
19641960 }
@@ -3232,7 +3228,7 @@ abstract class ElementImpl implements Element {
32323228 /// Initialize from linked node.
32333229 ElementImpl .forLinkedNode (
32343230 this ._enclosingElement, this .reference, this .linkedNode) {
3235- reference? .element = this ;
3231+ reference? .element ?? = this ;
32363232 }
32373233
32383234 /// Initialize a newly created element to have the given [name] .
@@ -4295,9 +4291,7 @@ abstract class ExecutableElementImpl extends ElementImpl
42954291 ExecutableElementImpl .forLinkedNode (
42964292 ElementImpl enclosing, Reference reference, AstNode linkedNode)
42974293 : serializedExecutable = null ,
4298- super .forLinkedNode (enclosing, reference, linkedNode) {
4299- reference.element = this ;
4300- }
4294+ super .forLinkedNode (enclosing, reference, linkedNode);
43014295
43024296 /// Initialize a newly created executable element to have the given [name] .
43034297 ExecutableElementImpl .forNode (Identifier name)
@@ -8413,15 +8407,14 @@ class ParameterElementImpl extends VariableElementImpl
84138407 } else {
84148408 var name = node.identifier.name;
84158409 var reference = containerRef.getChild (name);
8416- if (reference.element == null ) {
8417- reference.node2 = node;
8418- ParameterElementImpl .forLinkedNodeFactory (
8419- enclosing,
8420- reference,
8421- node,
8422- );
8410+ if (reference.hasElementFor (node)) {
8411+ return reference.element as ParameterElement ;
84238412 }
8424- return reference.element as ParameterElement ;
8413+ return ParameterElementImpl .forLinkedNodeFactory (
8414+ enclosing,
8415+ reference,
8416+ node,
8417+ );
84258418 }
84268419 }
84278420 }).toList ();
0 commit comments