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

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

Issue 2445193003: Fix for LibraryDirective annotations while applying resynthesized element model. (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « pkg/analyzer/lib/src/generated/declaration_resolver.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 engine.declaration_resolver_test; 5 library engine.declaration_resolver_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/src/dart/ast/ast.dart'; 9 import 'package:analyzer/src/dart/ast/ast.dart';
10 import 'package:analyzer/src/dart/ast/utilities.dart'; 10 import 'package:analyzer/src/dart/ast/utilities.dart';
11 import 'package:analyzer/src/dart/element/element.dart';
11 import 'package:analyzer/src/generated/declaration_resolver.dart'; 12 import 'package:analyzer/src/generated/declaration_resolver.dart';
12 import 'package:analyzer/src/generated/engine.dart'; 13 import 'package:analyzer/src/generated/engine.dart';
13 import 'package:analyzer/src/generated/source.dart'; 14 import 'package:analyzer/src/generated/source.dart';
14 import 'package:analyzer/src/task/dart.dart'; 15 import 'package:analyzer/src/task/dart.dart';
15 import 'package:analyzer/task/dart.dart'; 16 import 'package:analyzer/task/dart.dart';
16 import 'package:test/test.dart'; 17 import 'package:test/test.dart';
17 import 'package:test_reflective_loader/test_reflective_loader.dart'; 18 import 'package:test_reflective_loader/test_reflective_loader.dart';
18 19
19 import 'resolver_test_case.dart'; 20 import 'resolver_test_case.dart';
20 import 'test_support.dart'; 21 import 'test_support.dart';
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 unit = analysisContext.computeResult(target, RESOLVED_UNIT1); 161 unit = analysisContext.computeResult(target, RESOLVED_UNIT1);
161 unit2 = _cloneResolveUnit(unit); 162 unit2 = _cloneResolveUnit(unit);
162 checkMetadata('import'); 163 checkMetadata('import');
163 } 164 }
164 165
165 void test_metadata_libraryDirective() { 166 void test_metadata_libraryDirective() {
166 setupCode('@a library L;'); 167 setupCode('@a library L;');
167 checkMetadata('L'); 168 checkMetadata('L');
168 } 169 }
169 170
171 void test_metadata_libraryDirective_resynthesized() {
172 CompilationUnit unit = resolveSource('@a library L; const a = null;');
173 expect(unit.directives.single.metadata.single.name.name, 'a');
174 var unitElement = unit.element as CompilationUnitElementImpl;
175 // Damage the unit element - as if "setAnnotations" were not called.
176 // The LibraryElement still has the metadata, we should use it.
177 unitElement.setAnnotations(unit.directives.single.offset, []);
178 expect(unitElement.library.metadata, hasLength(1));
179 // DeclarationResolver on the clone should succeed.
180 CompilationUnit clonedUnit = AstCloner.clone(unit);
181 new DeclarationResolver().resolve(clonedUnit, unit.element);
182 expect(clonedUnit.directives.single.metadata.single.name.name, 'a');
183 }
184
170 void test_metadata_localFunctionDeclaration() { 185 void test_metadata_localFunctionDeclaration() {
171 setupCode('f() { @a g() {} }'); 186 setupCode('f() { @a g() {} }');
172 // Note: metadata on local function declarations is ignored by the 187 // Note: metadata on local function declarations is ignored by the
173 // analyzer. TODO(paulberry): is this a bug? 188 // analyzer. TODO(paulberry): is this a bug?
174 FunctionDeclaration node = EngineTestCase.findNode( 189 FunctionDeclaration node = EngineTestCase.findNode(
175 unit, code, 'g', (AstNode n) => n is FunctionDeclaration); 190 unit, code, 'g', (AstNode n) => n is FunctionDeclaration);
176 expect((node as FunctionDeclarationImpl).metadata, isEmpty); 191 expect((node as FunctionDeclarationImpl).metadata, isEmpty);
177 } 192 }
178 193
179 void test_metadata_localVariableDeclaration() { 194 void test_metadata_localVariableDeclaration() {
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 expect(element.type.toString(), "<T>(T, T) → T"); 618 expect(element.type.toString(), "<T>(T, T) → T");
604 expect(t.element, same(tElement)); 619 expect(t.element, same(tElement));
605 620
606 // re-resolve 621 // re-resolve
607 CompilationUnit unit2 = _cloneResolveUnit(unit); 622 CompilationUnit unit2 = _cloneResolveUnit(unit);
608 node = _findSimpleIdentifier(unit2, code, 'max').parent; 623 node = _findSimpleIdentifier(unit2, code, 'max').parent;
609 t = node.typeParameters.typeParameters[0]; 624 t = node.typeParameters.typeParameters[0];
610 expect(t.element, same(tElement)); 625 expect(t.element, same(tElement));
611 } 626 }
612 } 627 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/declaration_resolver.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698