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

Side by Side Diff: pkg/analysis_server/test/analysis/notification_overrides_test.dart

Issue 1519413002: Issue 25244. Disable invalid overrides. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years 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/analysis_server/lib/src/computer/computer_overrides.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) 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 test.analysis.notification.overrides; 5 library test.analysis.notification.overrides;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/plugin/protocol/protocol.dart'; 9 import 'package:analysis_server/plugin/protocol/protocol.dart';
10 import 'package:analysis_server/src/constants.dart'; 10 import 'package:analysis_server/src/constants.dart';
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 } 64 }
65 65
66 /** 66 /**
67 * Asserts that there are no overridden members from interfaces. 67 * Asserts that there are no overridden members from interfaces.
68 */ 68 */
69 void assertNoInterfaceMembers() { 69 void assertNoInterfaceMembers() {
70 expect(override.interfaceMembers, isNull); 70 expect(override.interfaceMembers, isNull);
71 } 71 }
72 72
73 /** 73 /**
74 * Validates that there is no [Override] at the offset of [search].
75 *
76 * If [length] is not specified explicitly, then length of an identifier
77 * from [search] is used.
78 */
79 void assertNoOverride(String search, [int length = -1]) {
80 int offset = findOffset(search);
81 if (length == -1) {
82 length = findIdentifierLength(search);
83 }
84 findOverride(offset, length, false);
85 }
86
87 /**
74 * Asserts that there are no overridden member from the superclass. 88 * Asserts that there are no overridden member from the superclass.
75 */ 89 */
76 void assertNoSuperMember() { 90 void assertNoSuperMember() {
77 expect(override.superclassMember, isNull); 91 expect(override.superclassMember, isNull);
78 } 92 }
79 93
80 /** 94 /**
81 * Finds an [Override] with the given [offset] and [length]. 95 * Finds an [Override] with the given [offset] and [length].
82 * 96 *
83 * If [exists] is `true`, then fails if such [Override] does not exist. 97 * If [exists] is `true`, then fails if such [Override] does not exist.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 m() {} // in B 144 m() {} // in B
131 } 145 }
132 '''); 146 ''');
133 await waitForTasksFinished(); 147 await waitForTasksFinished();
134 await prepareOverrides(); 148 await prepareOverrides();
135 assertHasOverride('m() {} // in B'); 149 assertHasOverride('m() {} // in B');
136 assertNoSuperMember(); 150 assertNoSuperMember();
137 assertHasInterfaceMember('m() {} // in A'); 151 assertHasInterfaceMember('m() {} // in A');
138 } 152 }
139 153
154 test_BAD_fieldByMethod() async {
155 addTestFile('''
156 class A {
157 int fff; // in A
158 }
159 class B extends A {
160 fff() {} // in B
161 }
162 ''');
163 await prepareOverrides();
164 assertNoOverride('fff() {} // in B');
165 }
166
167 test_BAD_getterByMethod() async {
168 addTestFile('''
169 class A {
170 get fff => null;
171 }
172 class B extends A {
173 fff() {}
174 }
175 ''');
176 await prepareOverrides();
177 assertNoOverride('fff() {}');
178 }
179
180 test_BAD_getterBySetter() async {
181 addTestFile('''
182 class A {
183 get fff => null;
184 }
185 class B extends A {
186 set fff(x) {}
187 }
188 ''');
189 await prepareOverrides();
190 assertNoOverride('fff(x) {}');
191 }
192
193 test_BAD_methodByField() async {
194 addTestFile('''
195 class A {
196 fff() {} // in A
197 }
198 class B extends A {
199 int fff; // in B
200 }
201 ''');
202 await prepareOverrides();
203 assertNoOverride('fff; // in B');
204 }
205
206 test_BAD_methodByGetter() async {
207 addTestFile('''
208 class A {
209 fff() {}
210 }
211 class B extends A {
212 int get fff => null;
213 }
214 ''');
215 await prepareOverrides();
216 assertNoOverride('fff => null');
217 }
218
219 test_BAD_methodBySetter() async {
220 addTestFile('''
221 class A {
222 fff(x) {} // A
223 }
224 class B extends A {
225 set fff(x) {} // B
226 }
227 ''');
228 await prepareOverrides();
229 assertNoOverride('fff(x) {} // B');
230 }
231
232 test_BAD_setterByGetter() async {
233 addTestFile('''
234 class A {
235 set fff(x) {}
236 }
237 class B extends A {
238 get fff => null;
239 }
240 ''');
241 await prepareOverrides();
242 assertNoOverride('fff => null;');
243 }
244
245 test_BAD_setterByMethod() async {
246 addTestFile('''
247 class A {
248 set fff(x) {} // A
249 }
250 class B extends A {
251 fff(x) {} // B
252 }
253 ''');
254 await prepareOverrides();
255 assertNoOverride('fff(x) {} // B');
256 }
257
140 test_definedInInterface_ofInterface() async { 258 test_definedInInterface_ofInterface() async {
141 addTestFile(''' 259 addTestFile('''
142 class A { 260 class A {
143 m() {} // in A 261 m() {} // in A
144 } 262 }
145 class B implements A {} 263 class B implements A {}
146 class C implements B { 264 class C implements B {
147 m() {} // in C 265 m() {} // in C
148 } 266 }
149 '''); 267 ''');
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 class B extends A { 429 class B extends A {
312 get fff => 0; // in B 430 get fff => 0; // in B
313 } 431 }
314 '''); 432 ''');
315 await prepareOverrides(); 433 await prepareOverrides();
316 assertHasOverride('fff => 0; // in B'); 434 assertHasOverride('fff => 0; // in B');
317 assertHasSuperElement('fff; // in A'); 435 assertHasSuperElement('fff; // in A');
318 assertNoInterfaceMembers(); 436 assertNoInterfaceMembers();
319 } 437 }
320 438
321 test_super_fieldByMethod() async {
322 addTestFile('''
323 class A {
324 int fff; // in A
325 }
326 class B extends A {
327 fff() {} // in B
328 }
329 ''');
330 await prepareOverrides();
331 assertHasOverride('fff() {} // in B');
332 assertHasSuperElement('fff; // in A');
333 assertNoInterfaceMembers();
334 }
335
336 test_super_fieldBySetter() async { 439 test_super_fieldBySetter() async {
337 addTestFile(''' 440 addTestFile('''
338 class A { 441 class A {
339 int fff; // in A 442 int fff; // in A
340 } 443 }
341 class B extends A { 444 class B extends A {
342 set fff(x) {} // in B 445 set fff(x) {} // in B
343 } 446 }
344 '''); 447 ''');
345 await prepareOverrides(); 448 await prepareOverrides();
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 class B extends A { 535 class B extends A {
433 set fff(x) {} // in B 536 set fff(x) {} // in B
434 } 537 }
435 '''); 538 ''');
436 await prepareOverrides(); 539 await prepareOverrides();
437 assertHasOverride('fff(x) {} // in B'); 540 assertHasOverride('fff(x) {} // in B');
438 assertHasSuperElement('fff(x) {} // in A'); 541 assertHasSuperElement('fff(x) {} // in A');
439 assertNoInterfaceMembers(); 542 assertNoInterfaceMembers();
440 } 543 }
441 } 544 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/computer/computer_overrides.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698