55import 'package:analyzer/dart/ast/ast.dart' ;
66import 'package:analyzer/dart/ast/token.dart' ;
77import 'package:analyzer/dart/ast/visitor.dart' ;
8+ import 'package:analyzer/src/dart/ast/ast.dart' ;
89
910/// Compute the set of external names referenced in the [unit] .
1011Set <String > computeReferencedNames (CompilationUnit unit) {
@@ -72,15 +73,26 @@ class _LocalNameScope {
7273
7374 factory _LocalNameScope .forClass (
7475 _LocalNameScope enclosing,
75- ClassDeclaration node,
76+ ClassDeclarationImpl node,
7677 ) {
7778 _LocalNameScope scope = _LocalNameScope (enclosing);
78- scope.addTypeParameters (node.typeParameters);
79- for (ClassMember member in node.members) {
80- if (member is FieldDeclaration ) {
81- scope.addVariableNames (member.fields);
82- } else if (member is MethodDeclaration ) {
83- scope.add (member.name);
79+ if (useDeclaringConstructorsAst) {
80+ scope.addTypeParameters (node.namePart.typeParameters);
81+ for (ClassMember member in node.body.members) {
82+ if (member is FieldDeclaration ) {
83+ scope.addVariableNames (member.fields);
84+ } else if (member is MethodDeclaration ) {
85+ scope.add (member.name);
86+ }
87+ }
88+ } else {
89+ scope.addTypeParameters (node.typeParameters);
90+ for (ClassMember member in node.members) {
91+ if (member is FieldDeclaration ) {
92+ scope.addVariableNames (member.fields);
93+ } else if (member is MethodDeclaration ) {
94+ scope.add (member.name);
95+ }
8496 }
8597 }
8698 return scope;
@@ -106,15 +118,26 @@ class _LocalNameScope {
106118
107119 factory _LocalNameScope .forExtensionType (
108120 _LocalNameScope enclosing,
109- ExtensionTypeDeclaration node,
121+ ExtensionTypeDeclarationImpl node,
110122 ) {
111123 var scope = _LocalNameScope (enclosing);
112- scope.addTypeParameters (node.typeParameters);
113- for (var member in node.members) {
114- if (member is FieldDeclaration ) {
115- scope.addVariableNames (member.fields);
116- } else if (member is MethodDeclaration ) {
117- scope.add (member.name);
124+ if (useDeclaringConstructorsAst) {
125+ scope.addTypeParameters (node.namePart.typeParameters);
126+ for (ClassMember member in node.body.members) {
127+ if (member is FieldDeclaration ) {
128+ scope.addVariableNames (member.fields);
129+ } else if (member is MethodDeclaration ) {
130+ scope.add (member.name);
131+ }
132+ }
133+ } else {
134+ scope.addTypeParameters (node.typeParameters);
135+ for (var member in node.members) {
136+ if (member is FieldDeclarationImpl ) {
137+ scope.addVariableNames (member.fields);
138+ } else if (member is MethodDeclarationImpl ) {
139+ scope.add (member.name);
140+ }
118141 }
119142 }
120143 return scope;
@@ -152,10 +175,29 @@ class _LocalNameScope {
152175 factory _LocalNameScope .forUnit (CompilationUnit node) {
153176 _LocalNameScope scope = _LocalNameScope (null );
154177 for (CompilationUnitMember declaration in node.declarations) {
155- if (declaration is NamedCompilationUnitMember ) {
156- scope.add (declaration.name);
157- } else if (declaration is TopLevelVariableDeclaration ) {
158- scope.addVariableNames (declaration.variables);
178+ switch (declaration) {
179+ case ClassDeclaration ():
180+ if (useDeclaringConstructorsAst) {
181+ scope.add (declaration.namePart.typeName);
182+ } else {
183+ scope.add (declaration.name);
184+ }
185+ case EnumDeclaration ():
186+ if (useDeclaringConstructorsAst) {
187+ scope.add (declaration.namePart.typeName);
188+ } else {
189+ scope.add (declaration.name);
190+ }
191+ case ExtensionTypeDeclaration ():
192+ if (useDeclaringConstructorsAst) {
193+ scope.add (declaration.namePart.typeName);
194+ } else {
195+ scope.add (declaration.name);
196+ }
197+ case NamedCompilationUnitMember ():
198+ scope.add (declaration.name);
199+ case TopLevelVariableDeclaration ():
200+ scope.addVariableNames (declaration.variables);
159201 }
160202 }
161203 return scope;
@@ -216,7 +258,7 @@ class _ReferencedNamesComputer extends GeneralizingAstVisitor<void> {
216258 }
217259
218260 @override
219- void visitClassDeclaration (ClassDeclaration node) {
261+ void visitClassDeclaration (covariant ClassDeclarationImpl node) {
220262 _LocalNameScope outerScope = localScope;
221263 try {
222264 localScope = _LocalNameScope .forClass (localScope, node);
@@ -262,7 +304,9 @@ class _ReferencedNamesComputer extends GeneralizingAstVisitor<void> {
262304 }
263305
264306 @override
265- void visitExtensionTypeDeclaration (ExtensionTypeDeclaration node) {
307+ void visitExtensionTypeDeclaration (
308+ covariant ExtensionTypeDeclarationImpl node,
309+ ) {
266310 var outerScope = localScope;
267311 try {
268312 localScope = _LocalNameScope .forExtensionType (localScope, node);
0 commit comments