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

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

Issue 1669383002: More aggressively fail when associating an existing element model with an AST (issue 25678) (Closed) Base URL: https://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
« no previous file with comments | « pkg/analyzer/lib/src/generated/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/utilities.dart'; 9 import 'package:analyzer/src/dart/ast/utilities.dart';
10 import 'package:analyzer/src/generated/engine.dart'; 10 import 'package:analyzer/src/generated/engine.dart';
(...skipping 18 matching lines...) Expand all
29 } 29 }
30 30
31 SimpleIdentifier _findSimpleIdentifier( 31 SimpleIdentifier _findSimpleIdentifier(
32 AstNode root, String code, String search) { 32 AstNode root, String code, String search) {
33 return EngineTestCase.findNode( 33 return EngineTestCase.findNode(
34 root, code, search, (n) => n is SimpleIdentifier); 34 root, code, search, (n) => n is SimpleIdentifier);
35 } 35 }
36 36
37 @reflectiveTest 37 @reflectiveTest
38 class DeclarationResolverTest extends ResolverTestCase { 38 class DeclarationResolverTest extends ResolverTestCase {
39 void fail_visitMethodDeclaration_setter_duplicate() {
40 // https://github.com/dart-lang/sdk/issues/25601
41 String code = r'''
42 class C {
43 set zzz(x) {}
44 set zzz(y) {}
45 }
46 ''';
47 CompilationUnit unit = resolveSource(code);
48 PropertyAccessorElement firstElement =
49 _findSimpleIdentifier(unit, code, 'zzz(x)').staticElement;
50 PropertyAccessorElement secondElement =
51 _findSimpleIdentifier(unit, code, 'zzz(y)').staticElement;
52 // re-resolve
53 CompilationUnit unit2 = _cloneResolveUnit(unit);
54 SimpleIdentifier firstName = _findSimpleIdentifier(unit2, code, 'zzz(x)');
55 SimpleIdentifier secondName = _findSimpleIdentifier(unit2, code, 'zzz(y)');
56 expect(firstName.staticElement, same(firstElement));
57 expect(secondName.staticElement, same(secondElement));
58 }
59
60 @override 39 @override
61 void setUp() { 40 void setUp() {
62 super.setUp(); 41 super.setUp();
63 } 42 }
64 43
65 void test_functionDeclaration_getter() { 44 void test_functionDeclaration_getter() {
66 String code = r''' 45 String code = r'''
67 int get zzz => 42; 46 int get zzz => 42;
68 '''; 47 ''';
69 CompilationUnit unit = resolveSource(code); 48 CompilationUnit unit = resolveSource(code);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 _findSimpleIdentifier(unit, code, 'zzz => null').staticElement; 113 _findSimpleIdentifier(unit, code, 'zzz => null').staticElement;
135 // re-resolve 114 // re-resolve
136 CompilationUnit unit2 = _cloneResolveUnit(unit); 115 CompilationUnit unit2 = _cloneResolveUnit(unit);
137 SimpleIdentifier firstName = _findSimpleIdentifier(unit2, code, 'zzz => 1'); 116 SimpleIdentifier firstName = _findSimpleIdentifier(unit2, code, 'zzz => 1');
138 SimpleIdentifier secondName = 117 SimpleIdentifier secondName =
139 _findSimpleIdentifier(unit2, code, 'zzz => null'); 118 _findSimpleIdentifier(unit2, code, 'zzz => null');
140 expect(firstName.staticElement, same(firstElement)); 119 expect(firstName.staticElement, same(firstElement));
141 expect(secondName.staticElement, same(secondElement)); 120 expect(secondName.staticElement, same(secondElement));
142 } 121 }
143 122
123 void test_visitMethodDeclaration_getterSetter() {
124 String code = r'''
125 class C {
126 int _field = 0;
127 int get field => _field;
128 void set field(value) {_field = value;}
129 }
130 ''';
131 CompilationUnit unit = resolveSource(code);
132 FieldElement getterElement =
133 _findSimpleIdentifier(unit, code, 'field =').staticElement;
134 PropertyAccessorElement setterElement =
135 _findSimpleIdentifier(unit, code, 'field(').staticElement;
136 // re-resolve
137 CompilationUnit unit2 = _cloneResolveUnit(unit);
138 SimpleIdentifier getterName = _findSimpleIdentifier(unit2, code, 'field =');
139 SimpleIdentifier setterName = _findSimpleIdentifier(unit2, code, 'field(');
140 expect(getterName.staticElement, same(getterElement));
141 expect(setterName.staticElement, same(setterElement));
142 }
143
144 void test_visitMethodDeclaration_method_duplicate() { 144 void test_visitMethodDeclaration_method_duplicate() {
145 String code = r''' 145 String code = r'''
146 class C { 146 class C {
147 void zzz(x) {} 147 void zzz(x) {}
148 void zzz(y) {} 148 void zzz(y) {}
149 } 149 }
150 '''; 150 ''';
151 CompilationUnit unit = resolveSource(code); 151 CompilationUnit unit = resolveSource(code);
152 MethodElement firstElement = 152 MethodElement firstElement =
153 _findSimpleIdentifier(unit, code, 'zzz(x)').staticElement; 153 _findSimpleIdentifier(unit, code, 'zzz(x)').staticElement;
154 MethodElement secondElement = 154 MethodElement secondElement =
155 _findSimpleIdentifier(unit, code, 'zzz(y)').staticElement; 155 _findSimpleIdentifier(unit, code, 'zzz(y)').staticElement;
156 // re-resolve 156 // re-resolve
157 CompilationUnit unit2 = _cloneResolveUnit(unit); 157 CompilationUnit unit2 = _cloneResolveUnit(unit);
158 SimpleIdentifier firstName = _findSimpleIdentifier(unit2, code, 'zzz(x)'); 158 SimpleIdentifier firstName = _findSimpleIdentifier(unit2, code, 'zzz(x)');
159 SimpleIdentifier secondName = _findSimpleIdentifier(unit2, code, 'zzz(y)'); 159 SimpleIdentifier secondName = _findSimpleIdentifier(unit2, code, 'zzz(y)');
160 expect(firstName.staticElement, same(firstElement)); 160 expect(firstName.staticElement, same(firstElement));
161 expect(secondName.staticElement, same(secondElement)); 161 expect(secondName.staticElement, same(secondElement));
162 } 162 }
163
164 void test_visitMethodDeclaration_setter_duplicate() {
165 // https://github.com/dart-lang/sdk/issues/25601
166 String code = r'''
167 class C {
168 set zzz(x) {}
169 set zzz(y) {}
170 }
171 ''';
172 CompilationUnit unit = resolveSource(code);
173 PropertyAccessorElement firstElement =
174 _findSimpleIdentifier(unit, code, 'zzz(x)').staticElement;
175 PropertyAccessorElement secondElement =
176 _findSimpleIdentifier(unit, code, 'zzz(y)').staticElement;
177 // re-resolve
178 CompilationUnit unit2 = _cloneResolveUnit(unit);
179 SimpleIdentifier firstName = _findSimpleIdentifier(unit2, code, 'zzz(x)');
180 SimpleIdentifier secondName = _findSimpleIdentifier(unit2, code, 'zzz(y)');
181 expect(firstName.staticElement, same(firstElement));
182 expect(secondName.staticElement, same(secondElement));
183 }
163 } 184 }
164 185
165 /** 186 /**
166 * Strong mode DeclarationResolver tests 187 * Strong mode DeclarationResolver tests
167 */ 188 */
168 @reflectiveTest 189 @reflectiveTest
169 class StrongModeDeclarationResolverTest extends ResolverTestCase { 190 class StrongModeDeclarationResolverTest extends ResolverTestCase {
170 @override 191 @override
171 void setUp() { 192 void setUp() {
172 resetWithOptions(new AnalysisOptionsImpl()..strongMode = true); 193 resetWithOptions(new AnalysisOptionsImpl()..strongMode = true);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 expect(element.type.toString(), "<T>(T, T) → T"); 232 expect(element.type.toString(), "<T>(T, T) → T");
212 expect(t.element, same(tElement)); 233 expect(t.element, same(tElement));
213 234
214 // re-resolve 235 // re-resolve
215 CompilationUnit unit2 = _cloneResolveUnit(unit); 236 CompilationUnit unit2 = _cloneResolveUnit(unit);
216 node = _findSimpleIdentifier(unit2, code, 'max').parent; 237 node = _findSimpleIdentifier(unit2, code, 'max').parent;
217 t = node.typeParameters.typeParameters[0]; 238 t = node.typeParameters.typeParameters[0];
218 expect(t.element, same(tElement)); 239 expect(t.element, same(tElement));
219 } 240 }
220 } 241 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/resolver.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698