Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: pkg/analyzer/test/generated/all_the_rest_test.dart

Issue 1665683002: Revert "Create ElementAnnotation objects prior to resolution." (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.test.generated.all_the_rest_test; 5 library analyzer.test.generated.all_the_rest_test;
6 6
7 import 'package:analyzer/dart/ast/ast.dart'; 7 import 'package:analyzer/dart/ast/ast.dart';
8 import 'package:analyzer/dart/element/element.dart'; 8 import 'package:analyzer/dart/element/element.dart';
9 import 'package:analyzer/dart/element/type.dart'; 9 import 'package:analyzer/dart/element/type.dart';
10 import 'package:analyzer/file_system/physical_file_system.dart'; 10 import 'package:analyzer/file_system/physical_file_system.dart';
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 DirectoryBasedSourceContainer container = 259 DirectoryBasedSourceContainer container =
260 new DirectoryBasedSourceContainer.con1(dir); 260 new DirectoryBasedSourceContainer.con1(dir);
261 expect(container.contains(source1), isTrue); 261 expect(container.contains(source1), isTrue);
262 expect(container.contains(source2), isTrue); 262 expect(container.contains(source2), isTrue);
263 expect(container.contains(source3), isFalse); 263 expect(container.contains(source3), isFalse);
264 } 264 }
265 } 265 }
266 266
267 @reflectiveTest 267 @reflectiveTest
268 class ElementBuilderTest extends ParserTestCase { 268 class ElementBuilderTest extends ParserTestCase {
269 /**
270 * Parse the given [code], pass it through [ElementBuilder], and return the
271 * resulting [ElementHolder].
272 */
273 ElementHolder buildElementsForText(String code) {
274 CompilationUnit unit = ParserTestCase.parseCompilationUnit(code);
275 ElementHolder holder = new ElementHolder();
276 ElementBuilder builder = new ElementBuilder(holder);
277 unit.accept(builder);
278 return holder;
279 }
280
281 /**
282 * Verify that the given [element] has exactly one annotation, and that its
283 * [ElementAnnotationImpl] is unresolved and points back to [element].
284 */
285 void checkMetadata(Element element) {
286 expect(element.metadata, hasLength(1));
287 expect(element.metadata[0], new isInstanceOf<ElementAnnotationImpl>());
288 ElementAnnotationImpl elementAnnotation = element.metadata[0];
289 expect(elementAnnotation.element, isNull); // Not yet resolved
290 expect(elementAnnotation.annotatedElement, element);
291 }
292
293 void fail_visitMethodDeclaration_setter_duplicate() { 269 void fail_visitMethodDeclaration_setter_duplicate() {
294 // https://github.com/dart-lang/sdk/issues/25601 270 // https://github.com/dart-lang/sdk/issues/25601
295 String code = r''' 271 String code = r'''
296 class C { 272 class C {
297 set zzz(x) {} 273 set zzz(x) {}
298 set zzz(y) {} 274 set zzz(y) {}
299 } 275 }
300 '''; 276 ''';
301 ClassElement classElement = buildElementsForText(code).types[0]; 277 CompilationUnit unit = ParserTestCase.parseCompilationUnit(code);
278 ElementHolder holder = new ElementHolder();
279 ElementBuilder builder = new ElementBuilder(holder);
280 unit.accept(builder);
281 ClassElement classElement = holder.types[0];
302 for (PropertyAccessorElement accessor in classElement.accessors) { 282 for (PropertyAccessorElement accessor in classElement.accessors) {
303 expect(accessor.variable.setter, same(accessor)); 283 expect(accessor.variable.setter, same(accessor));
304 } 284 }
305 } 285 }
306 286
307 void test_metadata_variableDeclaration() {
308 List<TopLevelVariableElement> topLevelVariables =
309 buildElementsForText('@a int x, y;').topLevelVariables;
310 checkMetadata(topLevelVariables[0]);
311 checkMetadata(topLevelVariables[1]);
312 }
313
314 void test_metadata_visitClassDeclaration() {
315 ClassElement classElement = buildElementsForText('@a class C {}').types[0];
316 checkMetadata(classElement);
317 }
318
319 void test_metadata_visitClassTypeAlias() {
320 ClassElement classElement =
321 buildElementsForText('@a class C = D with E;').types[0];
322 checkMetadata(classElement);
323 }
324
325 void test_metadata_visitConstructorDeclaration() {
326 ConstructorElement constructorElement =
327 buildElementsForText('class C { @a C(); }').types[0].constructors[0];
328 checkMetadata(constructorElement);
329 }
330
331 void test_metadata_visitDeclaredIdentifier() {
332 LocalVariableElement localVariableElement =
333 buildElementsForText('f() { for (@a var x in y) {} }')
334 .functions[0]
335 .localVariables[0];
336 checkMetadata(localVariableElement);
337 }
338
339 void test_metadata_visitEnumDeclaration() {
340 ClassElement classElement =
341 buildElementsForText('@a enum E { v }').enums[0];
342 checkMetadata(classElement);
343 }
344
345 void test_metadata_visitFieldFormalParameter() {
346 ParameterElement parameterElement =
347 buildElementsForText('class C { var x; C(@a this.x); }')
348 .types[0]
349 .constructors[0]
350 .parameters[0];
351 checkMetadata(parameterElement);
352 }
353
354 void test_metadata_visitFunctionDeclaration_function() {
355 FunctionElement functionElement =
356 buildElementsForText('@a f() {}').functions[0];
357 checkMetadata(functionElement);
358 }
359
360 void test_metadata_visitFunctionDeclaration_getter() {
361 PropertyAccessorElement propertyAccessorElement =
362 buildElementsForText('@a get f => null;').accessors[0];
363 checkMetadata(propertyAccessorElement);
364 }
365
366 void test_metadata_visitFunctionDeclaration_setter() {
367 PropertyAccessorElement propertyAccessorElement =
368 buildElementsForText('@a set f(value) {}').accessors[0];
369 checkMetadata(propertyAccessorElement);
370 }
371
372 void test_metadata_visitFunctionTypeAlias() {
373 FunctionTypeAliasElement functionTypeAliasElement =
374 buildElementsForText('@a typedef F();').typeAliases[0];
375 checkMetadata(functionTypeAliasElement);
376 }
377
378 void test_metadata_visitFunctionTypedFormalParameter() {
379 ParameterElement parameterElement =
380 buildElementsForText('f(@a g()) {}').functions[0].parameters[0];
381 checkMetadata(parameterElement);
382 }
383
384 void test_metadata_visitMethodDeclaration_getter() {
385 PropertyAccessorElement propertyAccessorElement =
386 buildElementsForText('class C { @a get m => null; }')
387 .types[0]
388 .accessors[0];
389 checkMetadata(propertyAccessorElement);
390 }
391
392 void test_metadata_visitMethodDeclaration_method() {
393 MethodElement methodElement =
394 buildElementsForText('class C { @a m() {} }').types[0].methods[0];
395 checkMetadata(methodElement);
396 }
397
398 void test_metadata_visitMethodDeclaration_setter() {
399 PropertyAccessorElement propertyAccessorElement =
400 buildElementsForText('class C { @a set f(value) {} }')
401 .types[0]
402 .accessors[0];
403 checkMetadata(propertyAccessorElement);
404 }
405
406 void test_metadata_visitSimpleFormalParameter() {
407 ParameterElement parameterElement =
408 buildElementsForText('f(@a x) {}').functions[0].parameters[0];
409 checkMetadata(parameterElement);
410 }
411
412 void test_metadata_visitTypeParameter() {
413 TypeParameterElement typeParameterElement =
414 buildElementsForText('class C<@a T> {}').types[0].typeParameters[0];
415 checkMetadata(typeParameterElement);
416 }
417
418 void test_visitCatchClause() { 287 void test_visitCatchClause() {
419 // } catch (e, s) { 288 // } catch (e, s) {
420 ElementHolder holder = new ElementHolder(); 289 ElementHolder holder = new ElementHolder();
421 ElementBuilder builder = new ElementBuilder(holder); 290 ElementBuilder builder = new ElementBuilder(holder);
422 String exceptionParameterName = "e"; 291 String exceptionParameterName = "e";
423 String stackParameterName = "s"; 292 String stackParameterName = "s";
424 CatchClause clause = 293 CatchClause clause =
425 AstFactory.catchClause2(exceptionParameterName, stackParameterName); 294 AstFactory.catchClause2(exceptionParameterName, stackParameterName);
426 clause.accept(builder); 295 clause.accept(builder);
427 296
(...skipping 3519 matching lines...) Expand 10 before | Expand all | Expand 10 after
3947 expect(UriKind.fromEncoding(0x70), same(UriKind.PACKAGE_URI)); 3816 expect(UriKind.fromEncoding(0x70), same(UriKind.PACKAGE_URI));
3948 expect(UriKind.fromEncoding(0x58), same(null)); 3817 expect(UriKind.fromEncoding(0x58), same(null));
3949 } 3818 }
3950 3819
3951 void test_getEncoding() { 3820 void test_getEncoding() {
3952 expect(UriKind.DART_URI.encoding, 0x64); 3821 expect(UriKind.DART_URI.encoding, 0x64);
3953 expect(UriKind.FILE_URI.encoding, 0x66); 3822 expect(UriKind.FILE_URI.encoding, 0x66);
3954 expect(UriKind.PACKAGE_URI.encoding, 0x70); 3823 expect(UriKind.PACKAGE_URI.encoding, 0x70);
3955 } 3824 }
3956 } 3825 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/resolver.dart ('k') | pkg/analyzer/test/generated/resolver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698