| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |