| 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 analyzer.test.generated.static_warning_code_test; | 5 library analyzer.test.generated.static_warning_code_test; |
| 6 | 6 |
| 7 import 'package:analyzer/error/error.dart'; | 7 import 'package:analyzer/error/error.dart'; |
| 8 import 'package:analyzer/src/error/codes.dart'; | 8 import 'package:analyzer/src/error/codes.dart'; |
| 9 import 'package:analyzer/src/generated/engine.dart'; | 9 import 'package:analyzer/src/generated/engine.dart'; |
| 10 import 'package:analyzer/src/generated/source_io.dart'; | 10 import 'package:analyzer/src/generated/source_io.dart'; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 fail_argumentTypeNotAssignable_tearOff_required() async { | 24 fail_argumentTypeNotAssignable_tearOff_required() async { |
| 25 Source source = addSource(r''' | 25 Source source = addSource(r''' |
| 26 class C { | 26 class C { |
| 27 Object/*=T*/ f/*<T>*/(Object/*=T*/ x) => x; | 27 Object/*=T*/ f/*<T>*/(Object/*=T*/ x) => x; |
| 28 } | 28 } |
| 29 g(C c) { | 29 g(C c) { |
| 30 var h = c.f/*<int>*/; | 30 var h = c.f/*<int>*/; |
| 31 print(h('s')); | 31 print(h('s')); |
| 32 } | 32 } |
| 33 '''); | 33 '''); |
| 34 await assertErrors( | 34 await computeAnalysisResult(source); |
| 35 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 35 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 36 verify([source]); | 36 verify([source]); |
| 37 } | 37 } |
| 38 | 38 |
| 39 fail_undefinedGetter() async { | 39 fail_undefinedGetter() async { |
| 40 Source source = addSource(r''' | 40 Source source = addSource(r''' |
| 41 '''); | 41 '''); |
| 42 await assertErrors(source, [StaticWarningCode.UNDEFINED_GETTER]); | 42 await computeAnalysisResult(source); |
| 43 assertErrors(source, [StaticWarningCode.UNDEFINED_GETTER]); |
| 43 verify([source]); | 44 verify([source]); |
| 44 } | 45 } |
| 45 | 46 |
| 46 fail_undefinedIdentifier_commentReference() async { | 47 fail_undefinedIdentifier_commentReference() async { |
| 47 Source source = addSource(r''' | 48 Source source = addSource(r''' |
| 48 /** [m] xxx [new B.c] */ | 49 /** [m] xxx [new B.c] */ |
| 49 class A { | 50 class A { |
| 50 }'''); | 51 }'''); |
| 51 await assertErrors(source, [ | 52 await computeAnalysisResult(source); |
| 53 assertErrors(source, [ |
| 52 StaticWarningCode.UNDEFINED_IDENTIFIER, | 54 StaticWarningCode.UNDEFINED_IDENTIFIER, |
| 53 StaticWarningCode.UNDEFINED_IDENTIFIER | 55 StaticWarningCode.UNDEFINED_IDENTIFIER |
| 54 ]); | 56 ]); |
| 55 } | 57 } |
| 56 | 58 |
| 57 fail_undefinedSetter() async { | 59 fail_undefinedSetter() async { |
| 58 Source source = addSource(r''' | 60 Source source = addSource(r''' |
| 59 class C {} | 61 class C {} |
| 60 f(var p) { | 62 f(var p) { |
| 61 C.m = 0; | 63 C.m = 0; |
| 62 }'''); | 64 }'''); |
| 63 await assertErrors(source, [StaticWarningCode.UNDEFINED_SETTER]); | 65 await computeAnalysisResult(source); |
| 66 assertErrors(source, [StaticWarningCode.UNDEFINED_SETTER]); |
| 64 verify([source]); | 67 verify([source]); |
| 65 } | 68 } |
| 66 | 69 |
| 67 test_ambiguousImport_as() async { | 70 test_ambiguousImport_as() async { |
| 68 Source source = addSource(r''' | 71 Source source = addSource(r''' |
| 69 import 'lib1.dart'; | 72 import 'lib1.dart'; |
| 70 import 'lib2.dart'; | 73 import 'lib2.dart'; |
| 71 f(p) {p as N;}'''); | 74 f(p) {p as N;}'''); |
| 72 addNamedSource( | 75 addNamedSource( |
| 73 "/lib1.dart", | 76 "/lib1.dart", |
| 74 r''' | 77 r''' |
| 75 library lib1; | 78 library lib1; |
| 76 class N {}'''); | 79 class N {}'''); |
| 77 addNamedSource( | 80 addNamedSource( |
| 78 "/lib2.dart", | 81 "/lib2.dart", |
| 79 r''' | 82 r''' |
| 80 library lib2; | 83 library lib2; |
| 81 class N {}'''); | 84 class N {}'''); |
| 82 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 85 await computeAnalysisResult(source); |
| 86 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
| 83 } | 87 } |
| 84 | 88 |
| 85 test_ambiguousImport_extends() async { | 89 test_ambiguousImport_extends() async { |
| 86 Source source = addSource(r''' | 90 Source source = addSource(r''' |
| 87 import 'lib1.dart'; | 91 import 'lib1.dart'; |
| 88 import 'lib2.dart'; | 92 import 'lib2.dart'; |
| 89 class A extends N {}'''); | 93 class A extends N {}'''); |
| 90 addNamedSource( | 94 addNamedSource( |
| 91 "/lib1.dart", | 95 "/lib1.dart", |
| 92 r''' | 96 r''' |
| 93 library lib1; | 97 library lib1; |
| 94 class N {}'''); | 98 class N {}'''); |
| 95 addNamedSource( | 99 addNamedSource( |
| 96 "/lib2.dart", | 100 "/lib2.dart", |
| 97 r''' | 101 r''' |
| 98 library lib2; | 102 library lib2; |
| 99 class N {}'''); | 103 class N {}'''); |
| 100 await assertErrors(source, [ | 104 await computeAnalysisResult(source); |
| 105 assertErrors(source, [ |
| 101 StaticWarningCode.AMBIGUOUS_IMPORT, | 106 StaticWarningCode.AMBIGUOUS_IMPORT, |
| 102 CompileTimeErrorCode.EXTENDS_NON_CLASS | 107 CompileTimeErrorCode.EXTENDS_NON_CLASS |
| 103 ]); | 108 ]); |
| 104 } | 109 } |
| 105 | 110 |
| 106 test_ambiguousImport_implements() async { | 111 test_ambiguousImport_implements() async { |
| 107 Source source = addSource(r''' | 112 Source source = addSource(r''' |
| 108 import 'lib1.dart'; | 113 import 'lib1.dart'; |
| 109 import 'lib2.dart'; | 114 import 'lib2.dart'; |
| 110 class A implements N {}'''); | 115 class A implements N {}'''); |
| 111 addNamedSource( | 116 addNamedSource( |
| 112 "/lib1.dart", | 117 "/lib1.dart", |
| 113 r''' | 118 r''' |
| 114 library lib1; | 119 library lib1; |
| 115 class N {}'''); | 120 class N {}'''); |
| 116 addNamedSource( | 121 addNamedSource( |
| 117 "/lib2.dart", | 122 "/lib2.dart", |
| 118 r''' | 123 r''' |
| 119 library lib2; | 124 library lib2; |
| 120 class N {}'''); | 125 class N {}'''); |
| 121 await assertErrors(source, [ | 126 await computeAnalysisResult(source); |
| 127 assertErrors(source, [ |
| 122 StaticWarningCode.AMBIGUOUS_IMPORT, | 128 StaticWarningCode.AMBIGUOUS_IMPORT, |
| 123 CompileTimeErrorCode.IMPLEMENTS_NON_CLASS | 129 CompileTimeErrorCode.IMPLEMENTS_NON_CLASS |
| 124 ]); | 130 ]); |
| 125 } | 131 } |
| 126 | 132 |
| 127 test_ambiguousImport_inPart() async { | 133 test_ambiguousImport_inPart() async { |
| 128 Source source = addSource(r''' | 134 Source source = addSource(r''' |
| 129 library lib; | 135 library lib; |
| 130 import 'lib1.dart'; | 136 import 'lib1.dart'; |
| 131 import 'lib2.dart'; | 137 import 'lib2.dart'; |
| 132 part 'part.dart';'''); | 138 part 'part.dart';'''); |
| 133 addNamedSource( | 139 addNamedSource( |
| 134 "/lib1.dart", | 140 "/lib1.dart", |
| 135 r''' | 141 r''' |
| 136 library lib1; | 142 library lib1; |
| 137 class N {}'''); | 143 class N {}'''); |
| 138 addNamedSource( | 144 addNamedSource( |
| 139 "/lib2.dart", | 145 "/lib2.dart", |
| 140 r''' | 146 r''' |
| 141 library lib2; | 147 library lib2; |
| 142 class N {}'''); | 148 class N {}'''); |
| 143 Source partSource = addNamedSource( | 149 Source partSource = addNamedSource( |
| 144 "/part.dart", | 150 "/part.dart", |
| 145 r''' | 151 r''' |
| 146 part of lib; | 152 part of lib; |
| 147 class A extends N {}'''); | 153 class A extends N {}'''); |
| 148 await assertNoErrors(source); | 154 await computeAnalysisResult(source); |
| 149 await assertErrors(partSource, [ | 155 await computeAnalysisResult(partSource); |
| 156 assertNoErrors(source); |
| 157 assertErrors(partSource, [ |
| 150 StaticWarningCode.AMBIGUOUS_IMPORT, | 158 StaticWarningCode.AMBIGUOUS_IMPORT, |
| 151 CompileTimeErrorCode.EXTENDS_NON_CLASS | 159 CompileTimeErrorCode.EXTENDS_NON_CLASS |
| 152 ]); | 160 ]); |
| 153 } | 161 } |
| 154 | 162 |
| 155 test_ambiguousImport_instanceCreation() async { | 163 test_ambiguousImport_instanceCreation() async { |
| 156 Source source = addSource(r''' | 164 Source source = addSource(r''' |
| 157 library L; | 165 library L; |
| 158 import 'lib1.dart'; | 166 import 'lib1.dart'; |
| 159 import 'lib2.dart'; | 167 import 'lib2.dart'; |
| 160 f() {new N();}'''); | 168 f() {new N();}'''); |
| 161 addNamedSource( | 169 addNamedSource( |
| 162 "/lib1.dart", | 170 "/lib1.dart", |
| 163 r''' | 171 r''' |
| 164 library lib1; | 172 library lib1; |
| 165 class N {}'''); | 173 class N {}'''); |
| 166 addNamedSource( | 174 addNamedSource( |
| 167 "/lib2.dart", | 175 "/lib2.dart", |
| 168 r''' | 176 r''' |
| 169 library lib2; | 177 library lib2; |
| 170 class N {}'''); | 178 class N {}'''); |
| 171 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 179 await computeAnalysisResult(source); |
| 180 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
| 172 } | 181 } |
| 173 | 182 |
| 174 test_ambiguousImport_is() async { | 183 test_ambiguousImport_is() async { |
| 175 Source source = addSource(r''' | 184 Source source = addSource(r''' |
| 176 import 'lib1.dart'; | 185 import 'lib1.dart'; |
| 177 import 'lib2.dart'; | 186 import 'lib2.dart'; |
| 178 f(p) {p is N;}'''); | 187 f(p) {p is N;}'''); |
| 179 addNamedSource( | 188 addNamedSource( |
| 180 "/lib1.dart", | 189 "/lib1.dart", |
| 181 r''' | 190 r''' |
| 182 library lib1; | 191 library lib1; |
| 183 class N {}'''); | 192 class N {}'''); |
| 184 addNamedSource( | 193 addNamedSource( |
| 185 "/lib2.dart", | 194 "/lib2.dart", |
| 186 r''' | 195 r''' |
| 187 library lib2; | 196 library lib2; |
| 188 class N {}'''); | 197 class N {}'''); |
| 189 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 198 await computeAnalysisResult(source); |
| 199 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
| 190 } | 200 } |
| 191 | 201 |
| 192 test_ambiguousImport_qualifier() async { | 202 test_ambiguousImport_qualifier() async { |
| 193 Source source = addSource(r''' | 203 Source source = addSource(r''' |
| 194 import 'lib1.dart'; | 204 import 'lib1.dart'; |
| 195 import 'lib2.dart'; | 205 import 'lib2.dart'; |
| 196 g() { N.FOO; }'''); | 206 g() { N.FOO; }'''); |
| 197 addNamedSource( | 207 addNamedSource( |
| 198 "/lib1.dart", | 208 "/lib1.dart", |
| 199 r''' | 209 r''' |
| 200 library lib1; | 210 library lib1; |
| 201 class N {}'''); | 211 class N {}'''); |
| 202 addNamedSource( | 212 addNamedSource( |
| 203 "/lib2.dart", | 213 "/lib2.dart", |
| 204 r''' | 214 r''' |
| 205 library lib2; | 215 library lib2; |
| 206 class N {}'''); | 216 class N {}'''); |
| 207 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 217 await computeAnalysisResult(source); |
| 218 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
| 208 } | 219 } |
| 209 | 220 |
| 210 test_ambiguousImport_typeAnnotation() async { | 221 test_ambiguousImport_typeAnnotation() async { |
| 211 Source source = addSource(r''' | 222 Source source = addSource(r''' |
| 212 import 'lib1.dart'; | 223 import 'lib1.dart'; |
| 213 import 'lib2.dart'; | 224 import 'lib2.dart'; |
| 214 typedef N FT(N p); | 225 typedef N FT(N p); |
| 215 N f(N p) { | 226 N f(N p) { |
| 216 N v; | 227 N v; |
| 217 return null; | 228 return null; |
| 218 } | 229 } |
| 219 class A { | 230 class A { |
| 220 N m() { return null; } | 231 N m() { return null; } |
| 221 } | 232 } |
| 222 class B<T extends N> {}'''); | 233 class B<T extends N> {}'''); |
| 223 addNamedSource( | 234 addNamedSource( |
| 224 "/lib1.dart", | 235 "/lib1.dart", |
| 225 r''' | 236 r''' |
| 226 library lib1; | 237 library lib1; |
| 227 class N {}'''); | 238 class N {}'''); |
| 228 addNamedSource( | 239 addNamedSource( |
| 229 "/lib2.dart", | 240 "/lib2.dart", |
| 230 r''' | 241 r''' |
| 231 library lib2; | 242 library lib2; |
| 232 class N {}'''); | 243 class N {}'''); |
| 233 await assertErrors(source, [ | 244 await computeAnalysisResult(source); |
| 245 assertErrors(source, [ |
| 234 StaticWarningCode.AMBIGUOUS_IMPORT, | 246 StaticWarningCode.AMBIGUOUS_IMPORT, |
| 235 StaticWarningCode.AMBIGUOUS_IMPORT, | 247 StaticWarningCode.AMBIGUOUS_IMPORT, |
| 236 StaticWarningCode.AMBIGUOUS_IMPORT, | 248 StaticWarningCode.AMBIGUOUS_IMPORT, |
| 237 StaticWarningCode.AMBIGUOUS_IMPORT, | 249 StaticWarningCode.AMBIGUOUS_IMPORT, |
| 238 StaticWarningCode.AMBIGUOUS_IMPORT, | 250 StaticWarningCode.AMBIGUOUS_IMPORT, |
| 239 StaticWarningCode.AMBIGUOUS_IMPORT, | 251 StaticWarningCode.AMBIGUOUS_IMPORT, |
| 240 StaticWarningCode.AMBIGUOUS_IMPORT | 252 StaticWarningCode.AMBIGUOUS_IMPORT |
| 241 ]); | 253 ]); |
| 242 } | 254 } |
| 243 | 255 |
| 244 test_ambiguousImport_typeArgument_annotation() async { | 256 test_ambiguousImport_typeArgument_annotation() async { |
| 245 Source source = addSource(r''' | 257 Source source = addSource(r''' |
| 246 import 'lib1.dart'; | 258 import 'lib1.dart'; |
| 247 import 'lib2.dart'; | 259 import 'lib2.dart'; |
| 248 class A<T> {} | 260 class A<T> {} |
| 249 A<N> f() { return null; }'''); | 261 A<N> f() { return null; }'''); |
| 250 addNamedSource( | 262 addNamedSource( |
| 251 "/lib1.dart", | 263 "/lib1.dart", |
| 252 r''' | 264 r''' |
| 253 library lib1; | 265 library lib1; |
| 254 class N {}'''); | 266 class N {}'''); |
| 255 addNamedSource( | 267 addNamedSource( |
| 256 "/lib2.dart", | 268 "/lib2.dart", |
| 257 r''' | 269 r''' |
| 258 library lib2; | 270 library lib2; |
| 259 class N {}'''); | 271 class N {}'''); |
| 260 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 272 await computeAnalysisResult(source); |
| 273 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
| 261 } | 274 } |
| 262 | 275 |
| 263 test_ambiguousImport_typeArgument_instanceCreation() async { | 276 test_ambiguousImport_typeArgument_instanceCreation() async { |
| 264 Source source = addSource(r''' | 277 Source source = addSource(r''' |
| 265 import 'lib1.dart'; | 278 import 'lib1.dart'; |
| 266 import 'lib2.dart'; | 279 import 'lib2.dart'; |
| 267 class A<T> {} | 280 class A<T> {} |
| 268 f() {new A<N>();}'''); | 281 f() {new A<N>();}'''); |
| 269 addNamedSource( | 282 addNamedSource( |
| 270 "/lib1.dart", | 283 "/lib1.dart", |
| 271 r''' | 284 r''' |
| 272 library lib1; | 285 library lib1; |
| 273 class N {}'''); | 286 class N {}'''); |
| 274 addNamedSource( | 287 addNamedSource( |
| 275 "/lib2.dart", | 288 "/lib2.dart", |
| 276 r''' | 289 r''' |
| 277 library lib2; | 290 library lib2; |
| 278 class N {}'''); | 291 class N {}'''); |
| 279 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 292 await computeAnalysisResult(source); |
| 293 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
| 280 } | 294 } |
| 281 | 295 |
| 282 test_ambiguousImport_varRead() async { | 296 test_ambiguousImport_varRead() async { |
| 283 Source source = addSource(r''' | 297 Source source = addSource(r''' |
| 284 import 'lib1.dart'; | 298 import 'lib1.dart'; |
| 285 import 'lib2.dart'; | 299 import 'lib2.dart'; |
| 286 f() { g(v); } | 300 f() { g(v); } |
| 287 g(p) {}'''); | 301 g(p) {}'''); |
| 288 addNamedSource( | 302 addNamedSource( |
| 289 "/lib1.dart", | 303 "/lib1.dart", |
| 290 r''' | 304 r''' |
| 291 library lib1; | 305 library lib1; |
| 292 var v;'''); | 306 var v;'''); |
| 293 addNamedSource( | 307 addNamedSource( |
| 294 "/lib2.dart", | 308 "/lib2.dart", |
| 295 r''' | 309 r''' |
| 296 library lib2; | 310 library lib2; |
| 297 var v;'''); | 311 var v;'''); |
| 298 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 312 await computeAnalysisResult(source); |
| 313 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
| 299 } | 314 } |
| 300 | 315 |
| 301 test_ambiguousImport_varWrite() async { | 316 test_ambiguousImport_varWrite() async { |
| 302 Source source = addSource(r''' | 317 Source source = addSource(r''' |
| 303 import 'lib1.dart'; | 318 import 'lib1.dart'; |
| 304 import 'lib2.dart'; | 319 import 'lib2.dart'; |
| 305 f() { v = 0; }'''); | 320 f() { v = 0; }'''); |
| 306 addNamedSource( | 321 addNamedSource( |
| 307 "/lib1.dart", | 322 "/lib1.dart", |
| 308 r''' | 323 r''' |
| 309 library lib1; | 324 library lib1; |
| 310 var v;'''); | 325 var v;'''); |
| 311 addNamedSource( | 326 addNamedSource( |
| 312 "/lib2.dart", | 327 "/lib2.dart", |
| 313 r''' | 328 r''' |
| 314 library lib2; | 329 library lib2; |
| 315 var v;'''); | 330 var v;'''); |
| 316 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 331 await computeAnalysisResult(source); |
| 332 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
| 317 } | 333 } |
| 318 | 334 |
| 319 test_ambiguousImport_withPrefix() async { | 335 test_ambiguousImport_withPrefix() async { |
| 320 Source source = addSource(r''' | 336 Source source = addSource(r''' |
| 321 library test; | 337 library test; |
| 322 import 'lib1.dart' as p; | 338 import 'lib1.dart' as p; |
| 323 import 'lib2.dart' as p; | 339 import 'lib2.dart' as p; |
| 324 main() { | 340 main() { |
| 325 p.f(); | 341 p.f(); |
| 326 }'''); | 342 }'''); |
| 327 addNamedSource( | 343 addNamedSource( |
| 328 "/lib1.dart", | 344 "/lib1.dart", |
| 329 r''' | 345 r''' |
| 330 library lib1; | 346 library lib1; |
| 331 f() {}'''); | 347 f() {}'''); |
| 332 addNamedSource( | 348 addNamedSource( |
| 333 "/lib2.dart", | 349 "/lib2.dart", |
| 334 r''' | 350 r''' |
| 335 library lib2; | 351 library lib2; |
| 336 f() {}'''); | 352 f() {}'''); |
| 337 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 353 await computeAnalysisResult(source); |
| 354 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
| 338 } | 355 } |
| 339 | 356 |
| 340 test_argumentTypeNotAssignable_ambiguousClassName() async { | 357 test_argumentTypeNotAssignable_ambiguousClassName() async { |
| 341 // See dartbug.com/19624 | 358 // See dartbug.com/19624 |
| 342 Source source = addNamedSource( | 359 Source source = addNamedSource( |
| 343 "/lib1.dart", | 360 "/lib1.dart", |
| 344 r''' | 361 r''' |
| 345 library lib1; | 362 library lib1; |
| 346 import 'lib2.dart'; | 363 import 'lib2.dart'; |
| 347 class _A {} | 364 class _A {} |
| (...skipping 20 matching lines...) Expand all Loading... |
| 368 } | 385 } |
| 369 | 386 |
| 370 test_argumentTypeNotAssignable_annotation_namedConstructor() async { | 387 test_argumentTypeNotAssignable_annotation_namedConstructor() async { |
| 371 Source source = addSource(r''' | 388 Source source = addSource(r''' |
| 372 class A { | 389 class A { |
| 373 const A.fromInt(int p); | 390 const A.fromInt(int p); |
| 374 } | 391 } |
| 375 @A.fromInt('0') | 392 @A.fromInt('0') |
| 376 main() { | 393 main() { |
| 377 }'''); | 394 }'''); |
| 378 await assertErrors( | 395 await computeAnalysisResult(source); |
| 379 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 396 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 380 verify([source]); | 397 verify([source]); |
| 381 } | 398 } |
| 382 | 399 |
| 383 test_argumentTypeNotAssignable_annotation_unnamedConstructor() async { | 400 test_argumentTypeNotAssignable_annotation_unnamedConstructor() async { |
| 384 Source source = addSource(r''' | 401 Source source = addSource(r''' |
| 385 class A { | 402 class A { |
| 386 const A(int p); | 403 const A(int p); |
| 387 } | 404 } |
| 388 @A('0') | 405 @A('0') |
| 389 main() { | 406 main() { |
| 390 }'''); | 407 }'''); |
| 391 await assertErrors( | 408 await computeAnalysisResult(source); |
| 392 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 409 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 393 verify([source]); | 410 verify([source]); |
| 394 } | 411 } |
| 395 | 412 |
| 396 test_argumentTypeNotAssignable_binary() async { | 413 test_argumentTypeNotAssignable_binary() async { |
| 397 Source source = addSource(r''' | 414 Source source = addSource(r''' |
| 398 class A { | 415 class A { |
| 399 operator +(int p) {} | 416 operator +(int p) {} |
| 400 } | 417 } |
| 401 f(A a) { | 418 f(A a) { |
| 402 a + '0'; | 419 a + '0'; |
| 403 }'''); | 420 }'''); |
| 404 await assertErrors( | 421 await computeAnalysisResult(source); |
| 405 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 422 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 406 verify([source]); | 423 verify([source]); |
| 407 } | 424 } |
| 408 | 425 |
| 409 test_argumentTypeNotAssignable_cascadeSecond() async { | 426 test_argumentTypeNotAssignable_cascadeSecond() async { |
| 410 Source source = addSource(r''' | 427 Source source = addSource(r''' |
| 411 // filler filler filler filler filler filler filler filler filler filler | 428 // filler filler filler filler filler filler filler filler filler filler |
| 412 class A { | 429 class A { |
| 413 B ma() { return new B(); } | 430 B ma() { return new B(); } |
| 414 } | 431 } |
| 415 class B { | 432 class B { |
| 416 mb(String p) {} | 433 mb(String p) {} |
| 417 } | 434 } |
| 418 | 435 |
| 419 main() { | 436 main() { |
| 420 A a = new A(); | 437 A a = new A(); |
| 421 a.. ma().mb(0); | 438 a.. ma().mb(0); |
| 422 }'''); | 439 }'''); |
| 423 await assertErrors( | 440 await computeAnalysisResult(source); |
| 424 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 441 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 425 verify([source]); | 442 verify([source]); |
| 426 } | 443 } |
| 427 | 444 |
| 428 test_argumentTypeNotAssignable_const() async { | 445 test_argumentTypeNotAssignable_const() async { |
| 429 Source source = addSource(r''' | 446 Source source = addSource(r''' |
| 430 class A { | 447 class A { |
| 431 const A(String p); | 448 const A(String p); |
| 432 } | 449 } |
| 433 main() { | 450 main() { |
| 434 const A(42); | 451 const A(42); |
| 435 }'''); | 452 }'''); |
| 436 await assertErrors(source, [ | 453 await computeAnalysisResult(source); |
| 454 assertErrors(source, [ |
| 437 StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, | 455 StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, |
| 438 CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH | 456 CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH |
| 439 ]); | 457 ]); |
| 440 verify([source]); | 458 verify([source]); |
| 441 } | 459 } |
| 442 | 460 |
| 443 test_argumentTypeNotAssignable_const_super() async { | 461 test_argumentTypeNotAssignable_const_super() async { |
| 444 Source source = addSource(r''' | 462 Source source = addSource(r''' |
| 445 class A { | 463 class A { |
| 446 const A(String p); | 464 const A(String p); |
| 447 } | 465 } |
| 448 class B extends A { | 466 class B extends A { |
| 449 const B() : super(42); | 467 const B() : super(42); |
| 450 }'''); | 468 }'''); |
| 451 await assertErrors( | 469 await computeAnalysisResult(source); |
| 452 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 470 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 453 verify([source]); | 471 verify([source]); |
| 454 } | 472 } |
| 455 | 473 |
| 456 test_argumentTypeNotAssignable_functionExpressionInvocation_required() async { | 474 test_argumentTypeNotAssignable_functionExpressionInvocation_required() async { |
| 457 Source source = addSource(r''' | 475 Source source = addSource(r''' |
| 458 main() { | 476 main() { |
| 459 (int x) {} (''); | 477 (int x) {} (''); |
| 460 }'''); | 478 }'''); |
| 461 await assertErrors( | 479 await computeAnalysisResult(source); |
| 462 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 480 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 463 verify([source]); | 481 verify([source]); |
| 464 } | 482 } |
| 465 | 483 |
| 466 test_argumentTypeNotAssignable_index() async { | 484 test_argumentTypeNotAssignable_index() async { |
| 467 Source source = addSource(r''' | 485 Source source = addSource(r''' |
| 468 class A { | 486 class A { |
| 469 operator [](int index) {} | 487 operator [](int index) {} |
| 470 } | 488 } |
| 471 f(A a) { | 489 f(A a) { |
| 472 a['0']; | 490 a['0']; |
| 473 }'''); | 491 }'''); |
| 474 await assertErrors( | 492 await computeAnalysisResult(source); |
| 475 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 493 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 476 verify([source]); | 494 verify([source]); |
| 477 } | 495 } |
| 478 | 496 |
| 479 test_argumentTypeNotAssignable_invocation_callParameter() async { | 497 test_argumentTypeNotAssignable_invocation_callParameter() async { |
| 480 Source source = addSource(r''' | 498 Source source = addSource(r''' |
| 481 class A { | 499 class A { |
| 482 call(int p) {} | 500 call(int p) {} |
| 483 } | 501 } |
| 484 f(A a) { | 502 f(A a) { |
| 485 a('0'); | 503 a('0'); |
| 486 }'''); | 504 }'''); |
| 487 await assertErrors( | 505 await computeAnalysisResult(source); |
| 488 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 506 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 489 verify([source]); | 507 verify([source]); |
| 490 } | 508 } |
| 491 | 509 |
| 492 test_argumentTypeNotAssignable_invocation_callVariable() async { | 510 test_argumentTypeNotAssignable_invocation_callVariable() async { |
| 493 Source source = addSource(r''' | 511 Source source = addSource(r''' |
| 494 class A { | 512 class A { |
| 495 call(int p) {} | 513 call(int p) {} |
| 496 } | 514 } |
| 497 main() { | 515 main() { |
| 498 A a = new A(); | 516 A a = new A(); |
| 499 a('0'); | 517 a('0'); |
| 500 }'''); | 518 }'''); |
| 501 await assertErrors( | 519 await computeAnalysisResult(source); |
| 502 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 520 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 503 verify([source]); | 521 verify([source]); |
| 504 } | 522 } |
| 505 | 523 |
| 506 test_argumentTypeNotAssignable_invocation_functionParameter() async { | 524 test_argumentTypeNotAssignable_invocation_functionParameter() async { |
| 507 Source source = addSource(r''' | 525 Source source = addSource(r''' |
| 508 a(b(int p)) { | 526 a(b(int p)) { |
| 509 b('0'); | 527 b('0'); |
| 510 }'''); | 528 }'''); |
| 511 await assertErrors( | 529 await computeAnalysisResult(source); |
| 512 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 530 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 513 verify([source]); | 531 verify([source]); |
| 514 } | 532 } |
| 515 | 533 |
| 516 test_argumentTypeNotAssignable_invocation_functionParameter_generic() async { | 534 test_argumentTypeNotAssignable_invocation_functionParameter_generic() async { |
| 517 Source source = addSource(r''' | 535 Source source = addSource(r''' |
| 518 class A<K, V> { | 536 class A<K, V> { |
| 519 m(f(K k), V v) { | 537 m(f(K k), V v) { |
| 520 f(v); | 538 f(v); |
| 521 } | 539 } |
| 522 }'''); | 540 }'''); |
| 523 await assertErrors( | 541 await computeAnalysisResult(source); |
| 524 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 542 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 525 verify([source]); | 543 verify([source]); |
| 526 } | 544 } |
| 527 | 545 |
| 528 test_argumentTypeNotAssignable_invocation_functionTypes_optional() async { | 546 test_argumentTypeNotAssignable_invocation_functionTypes_optional() async { |
| 529 Source source = addSource(r''' | 547 Source source = addSource(r''' |
| 530 void acceptFunNumOptBool(void funNumOptBool([bool b])) {} | 548 void acceptFunNumOptBool(void funNumOptBool([bool b])) {} |
| 531 void funNumBool(bool b) {} | 549 void funNumBool(bool b) {} |
| 532 main() { | 550 main() { |
| 533 acceptFunNumOptBool(funNumBool); | 551 acceptFunNumOptBool(funNumBool); |
| 534 }'''); | 552 }'''); |
| 535 await assertErrors( | 553 await computeAnalysisResult(source); |
| 536 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 554 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 537 verify([source]); | 555 verify([source]); |
| 538 } | 556 } |
| 539 | 557 |
| 540 test_argumentTypeNotAssignable_invocation_generic() async { | 558 test_argumentTypeNotAssignable_invocation_generic() async { |
| 541 Source source = addSource(r''' | 559 Source source = addSource(r''' |
| 542 class A<T> { | 560 class A<T> { |
| 543 m(T t) {} | 561 m(T t) {} |
| 544 } | 562 } |
| 545 f(A<String> a) { | 563 f(A<String> a) { |
| 546 a.m(1); | 564 a.m(1); |
| 547 }'''); | 565 }'''); |
| 548 await assertErrors( | 566 await computeAnalysisResult(source); |
| 549 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 567 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 550 verify([source]); | 568 verify([source]); |
| 551 } | 569 } |
| 552 | 570 |
| 553 test_argumentTypeNotAssignable_invocation_named() async { | 571 test_argumentTypeNotAssignable_invocation_named() async { |
| 554 Source source = addSource(r''' | 572 Source source = addSource(r''' |
| 555 f({String p}) {} | 573 f({String p}) {} |
| 556 main() { | 574 main() { |
| 557 f(p: 42); | 575 f(p: 42); |
| 558 }'''); | 576 }'''); |
| 559 await assertErrors( | 577 await computeAnalysisResult(source); |
| 560 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 578 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 561 verify([source]); | 579 verify([source]); |
| 562 } | 580 } |
| 563 | 581 |
| 564 test_argumentTypeNotAssignable_invocation_optional() async { | 582 test_argumentTypeNotAssignable_invocation_optional() async { |
| 565 Source source = addSource(r''' | 583 Source source = addSource(r''' |
| 566 f([String p]) {} | 584 f([String p]) {} |
| 567 main() { | 585 main() { |
| 568 f(42); | 586 f(42); |
| 569 }'''); | 587 }'''); |
| 570 await assertErrors( | 588 await computeAnalysisResult(source); |
| 571 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 589 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 572 verify([source]); | 590 verify([source]); |
| 573 } | 591 } |
| 574 | 592 |
| 575 test_argumentTypeNotAssignable_invocation_required() async { | 593 test_argumentTypeNotAssignable_invocation_required() async { |
| 576 Source source = addSource(r''' | 594 Source source = addSource(r''' |
| 577 f(String p) {} | 595 f(String p) {} |
| 578 main() { | 596 main() { |
| 579 f(42); | 597 f(42); |
| 580 }'''); | 598 }'''); |
| 581 await assertErrors( | 599 await computeAnalysisResult(source); |
| 582 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 600 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 583 verify([source]); | 601 verify([source]); |
| 584 } | 602 } |
| 585 | 603 |
| 586 test_argumentTypeNotAssignable_invocation_typedef_generic() async { | 604 test_argumentTypeNotAssignable_invocation_typedef_generic() async { |
| 587 Source source = addSource(r''' | 605 Source source = addSource(r''' |
| 588 typedef A<T>(T p); | 606 typedef A<T>(T p); |
| 589 f(A<int> a) { | 607 f(A<int> a) { |
| 590 a('1'); | 608 a('1'); |
| 591 }'''); | 609 }'''); |
| 592 await assertErrors( | 610 await computeAnalysisResult(source); |
| 593 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 611 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 594 verify([source]); | 612 verify([source]); |
| 595 } | 613 } |
| 596 | 614 |
| 597 test_argumentTypeNotAssignable_invocation_typedef_local() async { | 615 test_argumentTypeNotAssignable_invocation_typedef_local() async { |
| 598 Source source = addSource(r''' | 616 Source source = addSource(r''' |
| 599 typedef A(int p); | 617 typedef A(int p); |
| 600 A getA() => null; | 618 A getA() => null; |
| 601 main() { | 619 main() { |
| 602 A a = getA(); | 620 A a = getA(); |
| 603 a('1'); | 621 a('1'); |
| 604 }'''); | 622 }'''); |
| 605 await assertErrors( | 623 await computeAnalysisResult(source); |
| 606 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 624 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 607 verify([source]); | 625 verify([source]); |
| 608 } | 626 } |
| 609 | 627 |
| 610 test_argumentTypeNotAssignable_invocation_typedef_parameter() async { | 628 test_argumentTypeNotAssignable_invocation_typedef_parameter() async { |
| 611 Source source = addSource(r''' | 629 Source source = addSource(r''' |
| 612 typedef A(int p); | 630 typedef A(int p); |
| 613 f(A a) { | 631 f(A a) { |
| 614 a('1'); | 632 a('1'); |
| 615 }'''); | 633 }'''); |
| 616 await assertErrors( | 634 await computeAnalysisResult(source); |
| 617 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 635 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 618 verify([source]); | 636 verify([source]); |
| 619 } | 637 } |
| 620 | 638 |
| 621 test_argumentTypeNotAssignable_new_generic() async { | 639 test_argumentTypeNotAssignable_new_generic() async { |
| 622 Source source = addSource(r''' | 640 Source source = addSource(r''' |
| 623 class A<T> { | 641 class A<T> { |
| 624 A(T p) {} | 642 A(T p) {} |
| 625 } | 643 } |
| 626 main() { | 644 main() { |
| 627 new A<String>(42); | 645 new A<String>(42); |
| 628 }'''); | 646 }'''); |
| 629 await assertErrors( | 647 await computeAnalysisResult(source); |
| 630 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 648 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 631 verify([source]); | 649 verify([source]); |
| 632 } | 650 } |
| 633 | 651 |
| 634 test_argumentTypeNotAssignable_new_optional() async { | 652 test_argumentTypeNotAssignable_new_optional() async { |
| 635 Source source = addSource(r''' | 653 Source source = addSource(r''' |
| 636 class A { | 654 class A { |
| 637 A([String p]) {} | 655 A([String p]) {} |
| 638 } | 656 } |
| 639 main() { | 657 main() { |
| 640 new A(42); | 658 new A(42); |
| 641 }'''); | 659 }'''); |
| 642 await assertErrors( | 660 await computeAnalysisResult(source); |
| 643 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 661 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 644 verify([source]); | 662 verify([source]); |
| 645 } | 663 } |
| 646 | 664 |
| 647 test_argumentTypeNotAssignable_new_required() async { | 665 test_argumentTypeNotAssignable_new_required() async { |
| 648 Source source = addSource(r''' | 666 Source source = addSource(r''' |
| 649 class A { | 667 class A { |
| 650 A(String p) {} | 668 A(String p) {} |
| 651 } | 669 } |
| 652 main() { | 670 main() { |
| 653 new A(42); | 671 new A(42); |
| 654 }'''); | 672 }'''); |
| 655 await assertErrors( | 673 await computeAnalysisResult(source); |
| 656 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 674 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 657 verify([source]); | 675 verify([source]); |
| 658 } | 676 } |
| 659 | 677 |
| 660 test_assignmentToClass() async { | 678 test_assignmentToClass() async { |
| 661 Source source = addSource(''' | 679 Source source = addSource(''' |
| 662 class C {} | 680 class C {} |
| 663 main() { | 681 main() { |
| 664 C = null; | 682 C = null; |
| 665 } | 683 } |
| 666 '''); | 684 '''); |
| 667 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); | 685 await computeAnalysisResult(source); |
| 686 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); |
| 668 } | 687 } |
| 669 | 688 |
| 670 test_assignmentToConst_instanceVariable() async { | 689 test_assignmentToConst_instanceVariable() async { |
| 671 Source source = addSource(r''' | 690 Source source = addSource(r''' |
| 672 class A { | 691 class A { |
| 673 static const v = 0; | 692 static const v = 0; |
| 674 } | 693 } |
| 675 f() { | 694 f() { |
| 676 A.v = 1; | 695 A.v = 1; |
| 677 }'''); | 696 }'''); |
| 678 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); | 697 await computeAnalysisResult(source); |
| 698 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); |
| 679 verify([source]); | 699 verify([source]); |
| 680 } | 700 } |
| 681 | 701 |
| 682 test_assignmentToConst_instanceVariable_plusEq() async { | 702 test_assignmentToConst_instanceVariable_plusEq() async { |
| 683 Source source = addSource(r''' | 703 Source source = addSource(r''' |
| 684 class A { | 704 class A { |
| 685 static const v = 0; | 705 static const v = 0; |
| 686 } | 706 } |
| 687 f() { | 707 f() { |
| 688 A.v += 1; | 708 A.v += 1; |
| 689 }'''); | 709 }'''); |
| 690 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); | 710 await computeAnalysisResult(source); |
| 711 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); |
| 691 verify([source]); | 712 verify([source]); |
| 692 } | 713 } |
| 693 | 714 |
| 694 test_assignmentToConst_localVariable() async { | 715 test_assignmentToConst_localVariable() async { |
| 695 Source source = addSource(r''' | 716 Source source = addSource(r''' |
| 696 f() { | 717 f() { |
| 697 const x = 0; | 718 const x = 0; |
| 698 x = 1; | 719 x = 1; |
| 699 }'''); | 720 }'''); |
| 700 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); | 721 await computeAnalysisResult(source); |
| 722 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); |
| 701 verify([source]); | 723 verify([source]); |
| 702 } | 724 } |
| 703 | 725 |
| 704 test_assignmentToConst_localVariable_plusEq() async { | 726 test_assignmentToConst_localVariable_plusEq() async { |
| 705 Source source = addSource(r''' | 727 Source source = addSource(r''' |
| 706 f() { | 728 f() { |
| 707 const x = 0; | 729 const x = 0; |
| 708 x += 1; | 730 x += 1; |
| 709 }'''); | 731 }'''); |
| 710 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); | 732 await computeAnalysisResult(source); |
| 733 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); |
| 711 verify([source]); | 734 verify([source]); |
| 712 } | 735 } |
| 713 | 736 |
| 714 test_assignmentToEnumType() async { | 737 test_assignmentToEnumType() async { |
| 715 Source source = addSource(''' | 738 Source source = addSource(''' |
| 716 enum E { e } | 739 enum E { e } |
| 717 main() { | 740 main() { |
| 718 E = null; | 741 E = null; |
| 719 } | 742 } |
| 720 '''); | 743 '''); |
| 721 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); | 744 await computeAnalysisResult(source); |
| 745 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); |
| 722 } | 746 } |
| 723 | 747 |
| 724 test_assignmentToFinal_instanceVariable() async { | 748 test_assignmentToFinal_instanceVariable() async { |
| 725 Source source = addSource(r''' | 749 Source source = addSource(r''' |
| 726 class A { | 750 class A { |
| 727 final v = 0; | 751 final v = 0; |
| 728 } | 752 } |
| 729 f() { | 753 f() { |
| 730 A a = new A(); | 754 A a = new A(); |
| 731 a.v = 1; | 755 a.v = 1; |
| 732 }'''); | 756 }'''); |
| 733 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | 757 await computeAnalysisResult(source); |
| 758 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); |
| 734 verify([source]); | 759 verify([source]); |
| 735 } | 760 } |
| 736 | 761 |
| 737 test_assignmentToFinal_instanceVariable_plusEq() async { | 762 test_assignmentToFinal_instanceVariable_plusEq() async { |
| 738 Source source = addSource(r''' | 763 Source source = addSource(r''' |
| 739 class A { | 764 class A { |
| 740 final v = 0; | 765 final v = 0; |
| 741 } | 766 } |
| 742 f() { | 767 f() { |
| 743 A a = new A(); | 768 A a = new A(); |
| 744 a.v += 1; | 769 a.v += 1; |
| 745 }'''); | 770 }'''); |
| 746 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | 771 await computeAnalysisResult(source); |
| 772 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); |
| 747 verify([source]); | 773 verify([source]); |
| 748 } | 774 } |
| 749 | 775 |
| 750 test_assignmentToFinal_localVariable() async { | 776 test_assignmentToFinal_localVariable() async { |
| 751 Source source = addSource(r''' | 777 Source source = addSource(r''' |
| 752 f() { | 778 f() { |
| 753 final x = 0; | 779 final x = 0; |
| 754 x = 1; | 780 x = 1; |
| 755 }'''); | 781 }'''); |
| 756 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | 782 await computeAnalysisResult(source); |
| 783 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); |
| 757 verify([source]); | 784 verify([source]); |
| 758 } | 785 } |
| 759 | 786 |
| 760 test_assignmentToFinal_localVariable_plusEq() async { | 787 test_assignmentToFinal_localVariable_plusEq() async { |
| 761 Source source = addSource(r''' | 788 Source source = addSource(r''' |
| 762 f() { | 789 f() { |
| 763 final x = 0; | 790 final x = 0; |
| 764 x += 1; | 791 x += 1; |
| 765 }'''); | 792 }'''); |
| 766 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | 793 await computeAnalysisResult(source); |
| 794 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); |
| 767 verify([source]); | 795 verify([source]); |
| 768 } | 796 } |
| 769 | 797 |
| 770 test_assignmentToFinal_postfixMinusMinus() async { | 798 test_assignmentToFinal_postfixMinusMinus() async { |
| 771 Source source = addSource(r''' | 799 Source source = addSource(r''' |
| 772 f() { | 800 f() { |
| 773 final x = 0; | 801 final x = 0; |
| 774 x--; | 802 x--; |
| 775 }'''); | 803 }'''); |
| 776 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | 804 await computeAnalysisResult(source); |
| 805 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); |
| 777 verify([source]); | 806 verify([source]); |
| 778 } | 807 } |
| 779 | 808 |
| 780 test_assignmentToFinal_postfixPlusPlus() async { | 809 test_assignmentToFinal_postfixPlusPlus() async { |
| 781 Source source = addSource(r''' | 810 Source source = addSource(r''' |
| 782 f() { | 811 f() { |
| 783 final x = 0; | 812 final x = 0; |
| 784 x++; | 813 x++; |
| 785 }'''); | 814 }'''); |
| 786 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | 815 await computeAnalysisResult(source); |
| 816 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); |
| 787 verify([source]); | 817 verify([source]); |
| 788 } | 818 } |
| 789 | 819 |
| 790 test_assignmentToFinal_prefixMinusMinus() async { | 820 test_assignmentToFinal_prefixMinusMinus() async { |
| 791 Source source = addSource(r''' | 821 Source source = addSource(r''' |
| 792 f() { | 822 f() { |
| 793 final x = 0; | 823 final x = 0; |
| 794 --x; | 824 --x; |
| 795 }'''); | 825 }'''); |
| 796 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | 826 await computeAnalysisResult(source); |
| 827 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); |
| 797 verify([source]); | 828 verify([source]); |
| 798 } | 829 } |
| 799 | 830 |
| 800 test_assignmentToFinal_prefixPlusPlus() async { | 831 test_assignmentToFinal_prefixPlusPlus() async { |
| 801 Source source = addSource(r''' | 832 Source source = addSource(r''' |
| 802 f() { | 833 f() { |
| 803 final x = 0; | 834 final x = 0; |
| 804 ++x; | 835 ++x; |
| 805 }'''); | 836 }'''); |
| 806 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | 837 await computeAnalysisResult(source); |
| 838 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); |
| 807 verify([source]); | 839 verify([source]); |
| 808 } | 840 } |
| 809 | 841 |
| 810 test_assignmentToFinal_suffixMinusMinus() async { | 842 test_assignmentToFinal_suffixMinusMinus() async { |
| 811 Source source = addSource(r''' | 843 Source source = addSource(r''' |
| 812 f() { | 844 f() { |
| 813 final x = 0; | 845 final x = 0; |
| 814 x--; | 846 x--; |
| 815 }'''); | 847 }'''); |
| 816 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | 848 await computeAnalysisResult(source); |
| 849 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); |
| 817 verify([source]); | 850 verify([source]); |
| 818 } | 851 } |
| 819 | 852 |
| 820 test_assignmentToFinal_suffixPlusPlus() async { | 853 test_assignmentToFinal_suffixPlusPlus() async { |
| 821 Source source = addSource(r''' | 854 Source source = addSource(r''' |
| 822 f() { | 855 f() { |
| 823 final x = 0; | 856 final x = 0; |
| 824 x++; | 857 x++; |
| 825 }'''); | 858 }'''); |
| 826 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | 859 await computeAnalysisResult(source); |
| 860 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); |
| 827 verify([source]); | 861 verify([source]); |
| 828 } | 862 } |
| 829 | 863 |
| 830 test_assignmentToFinal_topLevelVariable() async { | 864 test_assignmentToFinal_topLevelVariable() async { |
| 831 Source source = addSource(r''' | 865 Source source = addSource(r''' |
| 832 final x = 0; | 866 final x = 0; |
| 833 f() { x = 1; }'''); | 867 f() { x = 1; }'''); |
| 834 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | 868 await computeAnalysisResult(source); |
| 869 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); |
| 835 verify([source]); | 870 verify([source]); |
| 836 } | 871 } |
| 837 | 872 |
| 838 test_assignmentToFinalNoSetter_prefixedIdentifier() async { | 873 test_assignmentToFinalNoSetter_prefixedIdentifier() async { |
| 839 Source source = addSource(r''' | 874 Source source = addSource(r''' |
| 840 class A { | 875 class A { |
| 841 int get x => 0; | 876 int get x => 0; |
| 842 } | 877 } |
| 843 main() { | 878 main() { |
| 844 A a = new A(); | 879 A a = new A(); |
| 845 a.x = 0; | 880 a.x = 0; |
| 846 }'''); | 881 }'''); |
| 847 await assertErrors( | 882 await computeAnalysisResult(source); |
| 848 source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]); | 883 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]); |
| 849 verify([source]); | 884 verify([source]); |
| 850 } | 885 } |
| 851 | 886 |
| 852 test_assignmentToFinalNoSetter_propertyAccess() async { | 887 test_assignmentToFinalNoSetter_propertyAccess() async { |
| 853 Source source = addSource(r''' | 888 Source source = addSource(r''' |
| 854 class A { | 889 class A { |
| 855 int get x => 0; | 890 int get x => 0; |
| 856 } | 891 } |
| 857 class B { | 892 class B { |
| 858 static A a; | 893 static A a; |
| 859 } | 894 } |
| 860 main() { | 895 main() { |
| 861 B.a.x = 0; | 896 B.a.x = 0; |
| 862 }'''); | 897 }'''); |
| 863 await assertErrors( | 898 await computeAnalysisResult(source); |
| 864 source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]); | 899 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]); |
| 865 verify([source]); | 900 verify([source]); |
| 866 } | 901 } |
| 867 | 902 |
| 868 test_assignmentToFunction() async { | 903 test_assignmentToFunction() async { |
| 869 Source source = addSource(r''' | 904 Source source = addSource(r''' |
| 870 f() {} | 905 f() {} |
| 871 main() { | 906 main() { |
| 872 f = null; | 907 f = null; |
| 873 }'''); | 908 }'''); |
| 874 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FUNCTION]); | 909 await computeAnalysisResult(source); |
| 910 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FUNCTION]); |
| 875 verify([source]); | 911 verify([source]); |
| 876 } | 912 } |
| 877 | 913 |
| 878 test_assignmentToMethod() async { | 914 test_assignmentToMethod() async { |
| 879 Source source = addSource(r''' | 915 Source source = addSource(r''' |
| 880 class A { | 916 class A { |
| 881 m() {} | 917 m() {} |
| 882 } | 918 } |
| 883 f(A a) { | 919 f(A a) { |
| 884 a.m = () {}; | 920 a.m = () {}; |
| 885 }'''); | 921 }'''); |
| 886 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_METHOD]); | 922 await computeAnalysisResult(source); |
| 923 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_METHOD]); |
| 887 verify([source]); | 924 verify([source]); |
| 888 } | 925 } |
| 889 | 926 |
| 890 test_assignmentToTypedef() async { | 927 test_assignmentToTypedef() async { |
| 891 Source source = addSource(''' | 928 Source source = addSource(''' |
| 892 typedef void F(); | 929 typedef void F(); |
| 893 main() { | 930 main() { |
| 894 F = null; | 931 F = null; |
| 895 } | 932 } |
| 896 '''); | 933 '''); |
| 897 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); | 934 await computeAnalysisResult(source); |
| 935 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); |
| 898 } | 936 } |
| 899 | 937 |
| 900 test_assignmentToTypeParameter() async { | 938 test_assignmentToTypeParameter() async { |
| 901 Source source = addSource(''' | 939 Source source = addSource(''' |
| 902 class C<T> { | 940 class C<T> { |
| 903 f() { | 941 f() { |
| 904 T = null; | 942 T = null; |
| 905 } | 943 } |
| 906 } | 944 } |
| 907 '''); | 945 '''); |
| 908 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); | 946 await computeAnalysisResult(source); |
| 947 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); |
| 909 } | 948 } |
| 910 | 949 |
| 911 test_caseBlockNotTerminated() async { | 950 test_caseBlockNotTerminated() async { |
| 912 Source source = addSource(r''' | 951 Source source = addSource(r''' |
| 913 f(int p) { | 952 f(int p) { |
| 914 switch (p) { | 953 switch (p) { |
| 915 case 0: | 954 case 0: |
| 916 f(p); | 955 f(p); |
| 917 case 1: | 956 case 1: |
| 918 break; | 957 break; |
| 919 } | 958 } |
| 920 }'''); | 959 }'''); |
| 921 await assertErrors(source, [StaticWarningCode.CASE_BLOCK_NOT_TERMINATED]); | 960 await computeAnalysisResult(source); |
| 961 assertErrors(source, [StaticWarningCode.CASE_BLOCK_NOT_TERMINATED]); |
| 922 verify([source]); | 962 verify([source]); |
| 923 } | 963 } |
| 924 | 964 |
| 925 test_castToNonType() async { | 965 test_castToNonType() async { |
| 926 Source source = addSource(r''' | 966 Source source = addSource(r''' |
| 927 var A = 0; | 967 var A = 0; |
| 928 f(String s) { var x = s as A; }'''); | 968 f(String s) { var x = s as A; }'''); |
| 929 await assertErrors(source, [StaticWarningCode.CAST_TO_NON_TYPE]); | 969 await computeAnalysisResult(source); |
| 970 assertErrors(source, [StaticWarningCode.CAST_TO_NON_TYPE]); |
| 930 verify([source]); | 971 verify([source]); |
| 931 } | 972 } |
| 932 | 973 |
| 933 test_concreteClassWithAbstractMember() async { | 974 test_concreteClassWithAbstractMember() async { |
| 934 Source source = addSource(r''' | 975 Source source = addSource(r''' |
| 935 class A { | 976 class A { |
| 936 m(); | 977 m(); |
| 937 }'''); | 978 }'''); |
| 938 await assertErrors( | 979 await computeAnalysisResult(source); |
| 980 assertErrors( |
| 939 source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]); | 981 source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]); |
| 940 verify([source]); | 982 verify([source]); |
| 941 } | 983 } |
| 942 | 984 |
| 943 test_concreteClassWithAbstractMember_noSuchMethod_interface() async { | 985 test_concreteClassWithAbstractMember_noSuchMethod_interface() async { |
| 944 Source source = addSource(r''' | 986 Source source = addSource(r''' |
| 945 class I { | 987 class I { |
| 946 noSuchMethod(v) => ''; | 988 noSuchMethod(v) => ''; |
| 947 } | 989 } |
| 948 class A implements I { | 990 class A implements I { |
| 949 m(); | 991 m(); |
| 950 }'''); | 992 }'''); |
| 951 await assertErrors( | 993 await computeAnalysisResult(source); |
| 994 assertErrors( |
| 952 source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]); | 995 source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]); |
| 953 verify([source]); | 996 verify([source]); |
| 954 } | 997 } |
| 955 | 998 |
| 956 test_conflictingDartImport() async { | 999 test_conflictingDartImport() async { |
| 957 Source source = addSource(r''' | 1000 Source source = addSource(r''' |
| 958 import 'lib.dart'; | 1001 import 'lib.dart'; |
| 959 import 'dart:async'; | 1002 import 'dart:async'; |
| 960 Future f = null; | 1003 Future f = null; |
| 961 Stream s;'''); | 1004 Stream s;'''); |
| 962 addNamedSource( | 1005 addNamedSource( |
| 963 "/lib.dart", | 1006 "/lib.dart", |
| 964 r''' | 1007 r''' |
| 965 library lib; | 1008 library lib; |
| 966 class Future {}'''); | 1009 class Future {}'''); |
| 967 await assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]); | 1010 await computeAnalysisResult(source); |
| 1011 assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]); |
| 968 } | 1012 } |
| 969 | 1013 |
| 970 test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter() as
ync { | 1014 test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter() as
ync { |
| 971 Source source = addSource(r''' | 1015 Source source = addSource(r''' |
| 972 class A { | 1016 class A { |
| 973 static set v(x) {} | 1017 static set v(x) {} |
| 974 } | 1018 } |
| 975 class B extends A { | 1019 class B extends A { |
| 976 var v; | 1020 var v; |
| 977 }'''); | 1021 }'''); |
| 978 await assertErrors(source, | 1022 await computeAnalysisResult(source); |
| 1023 assertErrors(source, |
| 979 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); | 1024 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 980 verify([source]); | 1025 verify([source]); |
| 981 } | 1026 } |
| 982 | 1027 |
| 983 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_getter() a
sync { | 1028 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_getter() a
sync { |
| 984 Source source = addSource(r''' | 1029 Source source = addSource(r''' |
| 985 class A { | 1030 class A { |
| 986 static get v => 0; | 1031 static get v => 0; |
| 987 } | 1032 } |
| 988 class B extends A { | 1033 class B extends A { |
| 989 get v => 0; | 1034 get v => 0; |
| 990 }'''); | 1035 }'''); |
| 991 await assertErrors(source, | 1036 await computeAnalysisResult(source); |
| 1037 assertErrors(source, |
| 992 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); | 1038 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 993 verify([source]); | 1039 verify([source]); |
| 994 } | 1040 } |
| 995 | 1041 |
| 996 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_method() a
sync { | 1042 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_method() a
sync { |
| 997 Source source = addSource(r''' | 1043 Source source = addSource(r''' |
| 998 class A { | 1044 class A { |
| 999 static v() {} | 1045 static v() {} |
| 1000 } | 1046 } |
| 1001 class B extends A { | 1047 class B extends A { |
| 1002 get v => 0; | 1048 get v => 0; |
| 1003 }'''); | 1049 }'''); |
| 1004 await assertErrors(source, | 1050 await computeAnalysisResult(source); |
| 1051 assertErrors(source, |
| 1005 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); | 1052 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 1006 verify([source]); | 1053 verify([source]); |
| 1007 } | 1054 } |
| 1008 | 1055 |
| 1009 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_setter() a
sync { | 1056 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_setter() a
sync { |
| 1010 Source source = addSource(r''' | 1057 Source source = addSource(r''' |
| 1011 class A { | 1058 class A { |
| 1012 static set v(x) {} | 1059 static set v(x) {} |
| 1013 } | 1060 } |
| 1014 class B extends A { | 1061 class B extends A { |
| 1015 get v => 0; | 1062 get v => 0; |
| 1016 }'''); | 1063 }'''); |
| 1017 await assertErrors(source, | 1064 await computeAnalysisResult(source); |
| 1065 assertErrors(source, |
| 1018 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); | 1066 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 1019 verify([source]); | 1067 verify([source]); |
| 1020 } | 1068 } |
| 1021 | 1069 |
| 1022 test_conflictingInstanceGetterAndSuperclassMember_declGetter_indirect() async
{ | 1070 test_conflictingInstanceGetterAndSuperclassMember_declGetter_indirect() async
{ |
| 1023 Source source = addSource(r''' | 1071 Source source = addSource(r''' |
| 1024 class A { | 1072 class A { |
| 1025 static int v; | 1073 static int v; |
| 1026 } | 1074 } |
| 1027 class B extends A {} | 1075 class B extends A {} |
| 1028 class C extends B { | 1076 class C extends B { |
| 1029 get v => 0; | 1077 get v => 0; |
| 1030 }'''); | 1078 }'''); |
| 1031 await assertErrors(source, | 1079 await computeAnalysisResult(source); |
| 1080 assertErrors(source, |
| 1032 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); | 1081 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 1033 verify([source]); | 1082 verify([source]); |
| 1034 } | 1083 } |
| 1035 | 1084 |
| 1036 test_conflictingInstanceGetterAndSuperclassMember_declGetter_mixin() async { | 1085 test_conflictingInstanceGetterAndSuperclassMember_declGetter_mixin() async { |
| 1037 Source source = addSource(r''' | 1086 Source source = addSource(r''' |
| 1038 class M { | 1087 class M { |
| 1039 static int v; | 1088 static int v; |
| 1040 } | 1089 } |
| 1041 class B extends Object with M { | 1090 class B extends Object with M { |
| 1042 get v => 0; | 1091 get v => 0; |
| 1043 }'''); | 1092 }'''); |
| 1044 await assertErrors(source, | 1093 await computeAnalysisResult(source); |
| 1094 assertErrors(source, |
| 1045 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); | 1095 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 1046 verify([source]); | 1096 verify([source]); |
| 1047 } | 1097 } |
| 1048 | 1098 |
| 1049 test_conflictingInstanceGetterAndSuperclassMember_direct_field() async { | 1099 test_conflictingInstanceGetterAndSuperclassMember_direct_field() async { |
| 1050 Source source = addSource(r''' | 1100 Source source = addSource(r''' |
| 1051 class A { | 1101 class A { |
| 1052 static int v; | 1102 static int v; |
| 1053 } | 1103 } |
| 1054 class B extends A { | 1104 class B extends A { |
| 1055 get v => 0; | 1105 get v => 0; |
| 1056 }'''); | 1106 }'''); |
| 1057 await assertErrors(source, | 1107 await computeAnalysisResult(source); |
| 1108 assertErrors(source, |
| 1058 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); | 1109 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 1059 verify([source]); | 1110 verify([source]); |
| 1060 } | 1111 } |
| 1061 | 1112 |
| 1062 test_conflictingInstanceMethodSetter2() async { | 1113 test_conflictingInstanceMethodSetter2() async { |
| 1063 Source source = addSource(r''' | 1114 Source source = addSource(r''' |
| 1064 class A { | 1115 class A { |
| 1065 foo() {} | 1116 foo() {} |
| 1066 set foo(a) {} | 1117 set foo(a) {} |
| 1067 }'''); | 1118 }'''); |
| 1068 await assertErrors( | 1119 await computeAnalysisResult(source); |
| 1120 assertErrors( |
| 1069 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER2]); | 1121 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER2]); |
| 1070 verify([source]); | 1122 verify([source]); |
| 1071 } | 1123 } |
| 1072 | 1124 |
| 1073 test_conflictingInstanceMethodSetter_sameClass() async { | 1125 test_conflictingInstanceMethodSetter_sameClass() async { |
| 1074 Source source = addSource(r''' | 1126 Source source = addSource(r''' |
| 1075 class A { | 1127 class A { |
| 1076 set foo(a) {} | 1128 set foo(a) {} |
| 1077 foo() {} | 1129 foo() {} |
| 1078 }'''); | 1130 }'''); |
| 1079 await assertErrors( | 1131 await computeAnalysisResult(source); |
| 1132 assertErrors( |
| 1080 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]); | 1133 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]); |
| 1081 verify([source]); | 1134 verify([source]); |
| 1082 } | 1135 } |
| 1083 | 1136 |
| 1084 test_conflictingInstanceMethodSetter_setterInInterface() async { | 1137 test_conflictingInstanceMethodSetter_setterInInterface() async { |
| 1085 Source source = addSource(r''' | 1138 Source source = addSource(r''' |
| 1086 abstract class A { | 1139 abstract class A { |
| 1087 set foo(a); | 1140 set foo(a); |
| 1088 } | 1141 } |
| 1089 abstract class B implements A { | 1142 abstract class B implements A { |
| 1090 foo() {} | 1143 foo() {} |
| 1091 }'''); | 1144 }'''); |
| 1092 await assertErrors( | 1145 await computeAnalysisResult(source); |
| 1146 assertErrors( |
| 1093 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]); | 1147 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]); |
| 1094 verify([source]); | 1148 verify([source]); |
| 1095 } | 1149 } |
| 1096 | 1150 |
| 1097 test_conflictingInstanceMethodSetter_setterInSuper() async { | 1151 test_conflictingInstanceMethodSetter_setterInSuper() async { |
| 1098 Source source = addSource(r''' | 1152 Source source = addSource(r''' |
| 1099 class A { | 1153 class A { |
| 1100 set foo(a) {} | 1154 set foo(a) {} |
| 1101 } | 1155 } |
| 1102 class B extends A { | 1156 class B extends A { |
| 1103 foo() {} | 1157 foo() {} |
| 1104 }'''); | 1158 }'''); |
| 1105 await assertErrors( | 1159 await computeAnalysisResult(source); |
| 1160 assertErrors( |
| 1106 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]); | 1161 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]); |
| 1107 verify([source]); | 1162 verify([source]); |
| 1108 } | 1163 } |
| 1109 | 1164 |
| 1110 test_conflictingInstanceSetterAndSuperclassMember() async { | 1165 test_conflictingInstanceSetterAndSuperclassMember() async { |
| 1111 Source source = addSource(r''' | 1166 Source source = addSource(r''' |
| 1112 class A { | 1167 class A { |
| 1113 static int v; | 1168 static int v; |
| 1114 } | 1169 } |
| 1115 class B extends A { | 1170 class B extends A { |
| 1116 set v(x) {} | 1171 set v(x) {} |
| 1117 }'''); | 1172 }'''); |
| 1118 await assertErrors(source, | 1173 await computeAnalysisResult(source); |
| 1174 assertErrors(source, |
| 1119 [StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER]); | 1175 [StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER]); |
| 1120 verify([source]); | 1176 verify([source]); |
| 1121 } | 1177 } |
| 1122 | 1178 |
| 1123 test_conflictingStaticGetterAndInstanceSetter_mixin() async { | 1179 test_conflictingStaticGetterAndInstanceSetter_mixin() async { |
| 1124 Source source = addSource(r''' | 1180 Source source = addSource(r''' |
| 1125 class A { | 1181 class A { |
| 1126 set x(int p) {} | 1182 set x(int p) {} |
| 1127 } | 1183 } |
| 1128 class B extends Object with A { | 1184 class B extends Object with A { |
| 1129 static get x => 0; | 1185 static get x => 0; |
| 1130 }'''); | 1186 }'''); |
| 1131 await assertErrors(source, | 1187 await computeAnalysisResult(source); |
| 1188 assertErrors(source, |
| 1132 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); | 1189 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); |
| 1133 verify([source]); | 1190 verify([source]); |
| 1134 } | 1191 } |
| 1135 | 1192 |
| 1136 test_conflictingStaticGetterAndInstanceSetter_superClass() async { | 1193 test_conflictingStaticGetterAndInstanceSetter_superClass() async { |
| 1137 Source source = addSource(r''' | 1194 Source source = addSource(r''' |
| 1138 class A { | 1195 class A { |
| 1139 set x(int p) {} | 1196 set x(int p) {} |
| 1140 } | 1197 } |
| 1141 class B extends A { | 1198 class B extends A { |
| 1142 static get x => 0; | 1199 static get x => 0; |
| 1143 }'''); | 1200 }'''); |
| 1144 await assertErrors(source, | 1201 await computeAnalysisResult(source); |
| 1202 assertErrors(source, |
| 1145 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); | 1203 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); |
| 1146 verify([source]); | 1204 verify([source]); |
| 1147 } | 1205 } |
| 1148 | 1206 |
| 1149 test_conflictingStaticGetterAndInstanceSetter_thisClass() async { | 1207 test_conflictingStaticGetterAndInstanceSetter_thisClass() async { |
| 1150 Source source = addSource(r''' | 1208 Source source = addSource(r''' |
| 1151 class A { | 1209 class A { |
| 1152 static get x => 0; | 1210 static get x => 0; |
| 1153 set x(int p) {} | 1211 set x(int p) {} |
| 1154 }'''); | 1212 }'''); |
| 1155 await assertErrors(source, | 1213 await computeAnalysisResult(source); |
| 1214 assertErrors(source, |
| 1156 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); | 1215 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); |
| 1157 verify([source]); | 1216 verify([source]); |
| 1158 } | 1217 } |
| 1159 | 1218 |
| 1160 test_conflictingStaticSetterAndInstanceMember_thisClass_getter() async { | 1219 test_conflictingStaticSetterAndInstanceMember_thisClass_getter() async { |
| 1161 Source source = addSource(r''' | 1220 Source source = addSource(r''' |
| 1162 class A { | 1221 class A { |
| 1163 get x => 0; | 1222 get x => 0; |
| 1164 static set x(int p) {} | 1223 static set x(int p) {} |
| 1165 }'''); | 1224 }'''); |
| 1166 await assertErrors(source, | 1225 await computeAnalysisResult(source); |
| 1226 assertErrors(source, |
| 1167 [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]); | 1227 [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]); |
| 1168 verify([source]); | 1228 verify([source]); |
| 1169 } | 1229 } |
| 1170 | 1230 |
| 1171 test_conflictingStaticSetterAndInstanceMember_thisClass_method() async { | 1231 test_conflictingStaticSetterAndInstanceMember_thisClass_method() async { |
| 1172 Source source = addSource(r''' | 1232 Source source = addSource(r''' |
| 1173 class A { | 1233 class A { |
| 1174 x() {} | 1234 x() {} |
| 1175 static set x(int p) {} | 1235 static set x(int p) {} |
| 1176 }'''); | 1236 }'''); |
| 1177 await assertErrors(source, | 1237 await computeAnalysisResult(source); |
| 1238 assertErrors(source, |
| 1178 [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]); | 1239 [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]); |
| 1179 verify([source]); | 1240 verify([source]); |
| 1180 } | 1241 } |
| 1181 | 1242 |
| 1182 test_constWithAbstractClass() async { | 1243 test_constWithAbstractClass() async { |
| 1183 Source source = addSource(r''' | 1244 Source source = addSource(r''' |
| 1184 abstract class A { | 1245 abstract class A { |
| 1185 const A(); | 1246 const A(); |
| 1186 } | 1247 } |
| 1187 void f() { | 1248 void f() { |
| 1188 A a = const A(); | 1249 A a = const A(); |
| 1189 }'''); | 1250 }'''); |
| 1190 await assertErrors(source, [StaticWarningCode.CONST_WITH_ABSTRACT_CLASS]); | 1251 await computeAnalysisResult(source); |
| 1252 assertErrors(source, [StaticWarningCode.CONST_WITH_ABSTRACT_CLASS]); |
| 1191 verify([source]); | 1253 verify([source]); |
| 1192 } | 1254 } |
| 1193 | 1255 |
| 1194 test_equalKeysInMap() async { | 1256 test_equalKeysInMap() async { |
| 1195 Source source = addSource("var m = {'a' : 0, 'b' : 1, 'a' : 2};"); | 1257 Source source = addSource("var m = {'a' : 0, 'b' : 1, 'a' : 2};"); |
| 1196 await assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]); | 1258 await computeAnalysisResult(source); |
| 1259 assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]); |
| 1197 verify([source]); | 1260 verify([source]); |
| 1198 } | 1261 } |
| 1199 | 1262 |
| 1200 test_equalKeysInMap_withEqualTypeParams() async { | 1263 test_equalKeysInMap_withEqualTypeParams() async { |
| 1201 Source source = addSource(r''' | 1264 Source source = addSource(r''' |
| 1202 class A<T> { | 1265 class A<T> { |
| 1203 const A(); | 1266 const A(); |
| 1204 } | 1267 } |
| 1205 var m = {const A<int>(): 0, const A<int>(): 1};'''); | 1268 var m = {const A<int>(): 0, const A<int>(): 1};'''); |
| 1206 await assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]); | 1269 await computeAnalysisResult(source); |
| 1270 assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]); |
| 1207 verify([source]); | 1271 verify([source]); |
| 1208 } | 1272 } |
| 1209 | 1273 |
| 1210 test_equalKeysInMap_withUnequalTypeParams() async { | 1274 test_equalKeysInMap_withUnequalTypeParams() async { |
| 1211 // No error should be produced because A<int> and A<num> are different | 1275 // No error should be produced because A<int> and A<num> are different |
| 1212 // types. | 1276 // types. |
| 1213 Source source = addSource(r''' | 1277 Source source = addSource(r''' |
| 1214 class A<T> { | 1278 class A<T> { |
| 1215 const A(); | 1279 const A(); |
| 1216 } | 1280 } |
| 1217 var m = {const A<int>(): 0, const A<num>(): 1};'''); | 1281 var m = {const A<int>(): 0, const A<num>(): 1};'''); |
| 1218 await assertNoErrors(source); | 1282 await computeAnalysisResult(source); |
| 1283 assertNoErrors(source); |
| 1219 verify([source]); | 1284 verify([source]); |
| 1220 } | 1285 } |
| 1221 | 1286 |
| 1222 test_exportDuplicatedLibraryNamed() async { | 1287 test_exportDuplicatedLibraryNamed() async { |
| 1223 Source source = addSource(r''' | 1288 Source source = addSource(r''' |
| 1224 library test; | 1289 library test; |
| 1225 export 'lib1.dart'; | 1290 export 'lib1.dart'; |
| 1226 export 'lib2.dart';'''); | 1291 export 'lib2.dart';'''); |
| 1227 addNamedSource("/lib1.dart", "library lib;"); | 1292 addNamedSource("/lib1.dart", "library lib;"); |
| 1228 addNamedSource("/lib2.dart", "library lib;"); | 1293 addNamedSource("/lib2.dart", "library lib;"); |
| 1229 await assertErrors( | 1294 await computeAnalysisResult(source); |
| 1230 source, [StaticWarningCode.EXPORT_DUPLICATED_LIBRARY_NAMED]); | 1295 assertErrors(source, [StaticWarningCode.EXPORT_DUPLICATED_LIBRARY_NAMED]); |
| 1231 verify([source]); | 1296 verify([source]); |
| 1232 } | 1297 } |
| 1233 | 1298 |
| 1234 test_extraPositionalArguments() async { | 1299 test_extraPositionalArguments() async { |
| 1235 Source source = addSource(r''' | 1300 Source source = addSource(r''' |
| 1236 f() {} | 1301 f() {} |
| 1237 main() { | 1302 main() { |
| 1238 f(0, 1, '2'); | 1303 f(0, 1, '2'); |
| 1239 }'''); | 1304 }'''); |
| 1240 await assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]); | 1305 await computeAnalysisResult(source); |
| 1306 assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]); |
| 1241 verify([source]); | 1307 verify([source]); |
| 1242 } | 1308 } |
| 1243 | 1309 |
| 1244 test_extraPositionalArguments_functionExpression() async { | 1310 test_extraPositionalArguments_functionExpression() async { |
| 1245 Source source = addSource(r''' | 1311 Source source = addSource(r''' |
| 1246 main() { | 1312 main() { |
| 1247 (int x) {} (0, 1); | 1313 (int x) {} (0, 1); |
| 1248 }'''); | 1314 }'''); |
| 1249 await assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]); | 1315 await computeAnalysisResult(source); |
| 1316 assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]); |
| 1250 verify([source]); | 1317 verify([source]); |
| 1251 } | 1318 } |
| 1252 | 1319 |
| 1253 test_fieldInitializedInInitializerAndDeclaration_final() async { | 1320 test_fieldInitializedInInitializerAndDeclaration_final() async { |
| 1254 Source source = addSource(r''' | 1321 Source source = addSource(r''' |
| 1255 class A { | 1322 class A { |
| 1256 final int x = 0; | 1323 final int x = 0; |
| 1257 A() : x = 1 {} | 1324 A() : x = 1 {} |
| 1258 }'''); | 1325 }'''); |
| 1259 await assertErrors(source, | 1326 await computeAnalysisResult(source); |
| 1327 assertErrors(source, |
| 1260 [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]); | 1328 [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]); |
| 1261 verify([source]); | 1329 verify([source]); |
| 1262 } | 1330 } |
| 1263 | 1331 |
| 1264 test_fieldInitializerNotAssignable() async { | 1332 test_fieldInitializerNotAssignable() async { |
| 1265 Source source = addSource(r''' | 1333 Source source = addSource(r''' |
| 1266 class A { | 1334 class A { |
| 1267 int x; | 1335 int x; |
| 1268 A() : x = ''; | 1336 A() : x = ''; |
| 1269 }'''); | 1337 }'''); |
| 1270 await assertErrors( | 1338 await computeAnalysisResult(source); |
| 1271 source, [StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE]); | 1339 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE]); |
| 1272 verify([source]); | 1340 verify([source]); |
| 1273 } | 1341 } |
| 1274 | 1342 |
| 1275 test_fieldInitializingFormalNotAssignable() async { | 1343 test_fieldInitializingFormalNotAssignable() async { |
| 1276 Source source = addSource(r''' | 1344 Source source = addSource(r''' |
| 1277 class A { | 1345 class A { |
| 1278 int x; | 1346 int x; |
| 1279 A(String this.x) {} | 1347 A(String this.x) {} |
| 1280 }'''); | 1348 }'''); |
| 1281 await assertErrors( | 1349 await computeAnalysisResult(source); |
| 1350 assertErrors( |
| 1282 source, [StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE]); | 1351 source, [StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE]); |
| 1283 verify([source]); | 1352 verify([source]); |
| 1284 } | 1353 } |
| 1285 | 1354 |
| 1286 /** | 1355 /** |
| 1287 * This test doesn't test the FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
code, but tests the | 1356 * This test doesn't test the FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
code, but tests the |
| 1288 * FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION code instead. It is provid
ed here to show | 1357 * FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION code instead. It is provid
ed here to show |
| 1289 * coverage over all of the permutations of initializers in constructor declar
ations. | 1358 * coverage over all of the permutations of initializers in constructor declar
ations. |
| 1290 * | 1359 * |
| 1291 * Note: FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION covers a subset of | 1360 * Note: FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION covers a subset of |
| 1292 * FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR, since it more specific, w
e use it instead of | 1361 * FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR, since it more specific, w
e use it instead of |
| 1293 * the broader code | 1362 * the broader code |
| 1294 */ | 1363 */ |
| 1295 test_finalInitializedInDeclarationAndConstructor_initializers() async { | 1364 test_finalInitializedInDeclarationAndConstructor_initializers() async { |
| 1296 Source source = addSource(r''' | 1365 Source source = addSource(r''' |
| 1297 class A { | 1366 class A { |
| 1298 final x = 0; | 1367 final x = 0; |
| 1299 A() : x = 0 {} | 1368 A() : x = 0 {} |
| 1300 }'''); | 1369 }'''); |
| 1301 await assertErrors(source, | 1370 await computeAnalysisResult(source); |
| 1371 assertErrors(source, |
| 1302 [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]); | 1372 [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]); |
| 1303 verify([source]); | 1373 verify([source]); |
| 1304 } | 1374 } |
| 1305 | 1375 |
| 1306 test_finalInitializedInDeclarationAndConstructor_initializingFormal() async { | 1376 test_finalInitializedInDeclarationAndConstructor_initializingFormal() async { |
| 1307 Source source = addSource(r''' | 1377 Source source = addSource(r''' |
| 1308 class A { | 1378 class A { |
| 1309 final x = 0; | 1379 final x = 0; |
| 1310 A(this.x) {} | 1380 A(this.x) {} |
| 1311 }'''); | 1381 }'''); |
| 1312 await assertErrors(source, | 1382 await computeAnalysisResult(source); |
| 1383 assertErrors(source, |
| 1313 [StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR]); | 1384 [StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR]); |
| 1314 verify([source]); | 1385 verify([source]); |
| 1315 } | 1386 } |
| 1316 | 1387 |
| 1317 test_finalNotInitialized_inConstructor_1() async { | 1388 test_finalNotInitialized_inConstructor_1() async { |
| 1318 Source source = addSource(r''' | 1389 Source source = addSource(r''' |
| 1319 class A { | 1390 class A { |
| 1320 final int x; | 1391 final int x; |
| 1321 A() {} | 1392 A() {} |
| 1322 }'''); | 1393 }'''); |
| 1323 await assertErrors( | 1394 await computeAnalysisResult(source); |
| 1395 assertErrors( |
| 1324 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1]); | 1396 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1]); |
| 1325 verify([source]); | 1397 verify([source]); |
| 1326 } | 1398 } |
| 1327 | 1399 |
| 1328 test_finalNotInitialized_inConstructor_2() async { | 1400 test_finalNotInitialized_inConstructor_2() async { |
| 1329 Source source = addSource(r''' | 1401 Source source = addSource(r''' |
| 1330 class A { | 1402 class A { |
| 1331 final int a; | 1403 final int a; |
| 1332 final int b; | 1404 final int b; |
| 1333 A() {} | 1405 A() {} |
| 1334 }'''); | 1406 }'''); |
| 1335 await assertErrors( | 1407 await computeAnalysisResult(source); |
| 1408 assertErrors( |
| 1336 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2]); | 1409 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2]); |
| 1337 verify([source]); | 1410 verify([source]); |
| 1338 } | 1411 } |
| 1339 | 1412 |
| 1340 test_finalNotInitialized_inConstructor_3() async { | 1413 test_finalNotInitialized_inConstructor_3() async { |
| 1341 Source source = addSource(r''' | 1414 Source source = addSource(r''' |
| 1342 class A { | 1415 class A { |
| 1343 final int a; | 1416 final int a; |
| 1344 final int b; | 1417 final int b; |
| 1345 final int c; | 1418 final int c; |
| 1346 A() {} | 1419 A() {} |
| 1347 }'''); | 1420 }'''); |
| 1348 await assertErrors( | 1421 await computeAnalysisResult(source); |
| 1422 assertErrors( |
| 1349 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS]); | 1423 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS]); |
| 1350 verify([source]); | 1424 verify([source]); |
| 1351 } | 1425 } |
| 1352 | 1426 |
| 1353 test_finalNotInitialized_instanceField_final() async { | 1427 test_finalNotInitialized_instanceField_final() async { |
| 1354 Source source = addSource(r''' | 1428 Source source = addSource(r''' |
| 1355 class A { | 1429 class A { |
| 1356 final F; | 1430 final F; |
| 1357 }'''); | 1431 }'''); |
| 1358 await assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); | 1432 await computeAnalysisResult(source); |
| 1433 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); |
| 1359 verify([source]); | 1434 verify([source]); |
| 1360 } | 1435 } |
| 1361 | 1436 |
| 1362 test_finalNotInitialized_instanceField_final_static() async { | 1437 test_finalNotInitialized_instanceField_final_static() async { |
| 1363 Source source = addSource(r''' | 1438 Source source = addSource(r''' |
| 1364 class A { | 1439 class A { |
| 1365 static final F; | 1440 static final F; |
| 1366 }'''); | 1441 }'''); |
| 1367 await assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); | 1442 await computeAnalysisResult(source); |
| 1443 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); |
| 1368 verify([source]); | 1444 verify([source]); |
| 1369 } | 1445 } |
| 1370 | 1446 |
| 1371 test_finalNotInitialized_library_final() async { | 1447 test_finalNotInitialized_library_final() async { |
| 1372 Source source = addSource("final F;"); | 1448 Source source = addSource("final F;"); |
| 1373 await assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); | 1449 await computeAnalysisResult(source); |
| 1450 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); |
| 1374 verify([source]); | 1451 verify([source]); |
| 1375 } | 1452 } |
| 1376 | 1453 |
| 1377 test_finalNotInitialized_local_final() async { | 1454 test_finalNotInitialized_local_final() async { |
| 1378 Source source = addSource(r''' | 1455 Source source = addSource(r''' |
| 1379 f() { | 1456 f() { |
| 1380 final int x; | 1457 final int x; |
| 1381 }'''); | 1458 }'''); |
| 1382 await assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); | 1459 await computeAnalysisResult(source); |
| 1460 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); |
| 1383 verify([source]); | 1461 verify([source]); |
| 1384 } | 1462 } |
| 1385 | 1463 |
| 1386 test_functionWithoutCall_direct() async { | 1464 test_functionWithoutCall_direct() async { |
| 1387 Source source = addSource(r''' | 1465 Source source = addSource(r''' |
| 1388 class A implements Function { | 1466 class A implements Function { |
| 1389 }'''); | 1467 }'''); |
| 1390 await assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); | 1468 await computeAnalysisResult(source); |
| 1469 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); |
| 1391 verify([source]); | 1470 verify([source]); |
| 1392 } | 1471 } |
| 1393 | 1472 |
| 1394 test_functionWithoutCall_indirect_extends() async { | 1473 test_functionWithoutCall_indirect_extends() async { |
| 1395 Source source = addSource(r''' | 1474 Source source = addSource(r''' |
| 1396 abstract class A implements Function { | 1475 abstract class A implements Function { |
| 1397 } | 1476 } |
| 1398 class B extends A { | 1477 class B extends A { |
| 1399 }'''); | 1478 }'''); |
| 1400 await assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); | 1479 await computeAnalysisResult(source); |
| 1480 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); |
| 1401 verify([source]); | 1481 verify([source]); |
| 1402 } | 1482 } |
| 1403 | 1483 |
| 1404 test_functionWithoutCall_indirect_implements() async { | 1484 test_functionWithoutCall_indirect_implements() async { |
| 1405 Source source = addSource(r''' | 1485 Source source = addSource(r''' |
| 1406 abstract class A implements Function { | 1486 abstract class A implements Function { |
| 1407 } | 1487 } |
| 1408 class B implements A { | 1488 class B implements A { |
| 1409 }'''); | 1489 }'''); |
| 1410 await assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); | 1490 await computeAnalysisResult(source); |
| 1491 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); |
| 1411 verify([source]); | 1492 verify([source]); |
| 1412 } | 1493 } |
| 1413 | 1494 |
| 1414 test_importDuplicatedLibraryNamed() async { | 1495 test_importDuplicatedLibraryNamed() async { |
| 1415 Source source = addSource(r''' | 1496 Source source = addSource(r''' |
| 1416 library test; | 1497 library test; |
| 1417 import 'lib1.dart'; | 1498 import 'lib1.dart'; |
| 1418 import 'lib2.dart';'''); | 1499 import 'lib2.dart';'''); |
| 1419 addNamedSource("/lib1.dart", "library lib;"); | 1500 addNamedSource("/lib1.dart", "library lib;"); |
| 1420 addNamedSource("/lib2.dart", "library lib;"); | 1501 addNamedSource("/lib2.dart", "library lib;"); |
| 1421 await assertErrors(source, [ | 1502 await computeAnalysisResult(source); |
| 1503 assertErrors(source, [ |
| 1422 StaticWarningCode.IMPORT_DUPLICATED_LIBRARY_NAMED, | 1504 StaticWarningCode.IMPORT_DUPLICATED_LIBRARY_NAMED, |
| 1423 HintCode.UNUSED_IMPORT, | 1505 HintCode.UNUSED_IMPORT, |
| 1424 HintCode.UNUSED_IMPORT | 1506 HintCode.UNUSED_IMPORT |
| 1425 ]); | 1507 ]); |
| 1426 verify([source]); | 1508 verify([source]); |
| 1427 } | 1509 } |
| 1428 | 1510 |
| 1429 test_importOfNonLibrary() async { | 1511 test_importOfNonLibrary() async { |
| 1430 await resolveWithErrors(<String>[ | 1512 await resolveWithErrors(<String>[ |
| 1431 r''' | 1513 r''' |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1443 test_inconsistentMethodInheritanceGetterAndMethod() async { | 1525 test_inconsistentMethodInheritanceGetterAndMethod() async { |
| 1444 Source source = addSource(r''' | 1526 Source source = addSource(r''' |
| 1445 abstract class A { | 1527 abstract class A { |
| 1446 int x(); | 1528 int x(); |
| 1447 } | 1529 } |
| 1448 abstract class B { | 1530 abstract class B { |
| 1449 int get x; | 1531 int get x; |
| 1450 } | 1532 } |
| 1451 class C implements A, B { | 1533 class C implements A, B { |
| 1452 }'''); | 1534 }'''); |
| 1453 await assertErrors(source, | 1535 await computeAnalysisResult(source); |
| 1536 assertErrors(source, |
| 1454 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); | 1537 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); |
| 1455 verify([source]); | 1538 verify([source]); |
| 1456 } | 1539 } |
| 1457 | 1540 |
| 1458 test_instanceMethodNameCollidesWithSuperclassStatic_field() async { | 1541 test_instanceMethodNameCollidesWithSuperclassStatic_field() async { |
| 1459 Source source = addSource(r''' | 1542 Source source = addSource(r''' |
| 1460 class A { | 1543 class A { |
| 1461 static var n; | 1544 static var n; |
| 1462 } | 1545 } |
| 1463 class B extends A { | 1546 class B extends A { |
| 1464 void n() {} | 1547 void n() {} |
| 1465 }'''); | 1548 }'''); |
| 1466 await assertErrors(source, [ | 1549 await computeAnalysisResult(source); |
| 1550 assertErrors(source, [ |
| 1467 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC | 1551 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC |
| 1468 ]); | 1552 ]); |
| 1469 verify([source]); | 1553 verify([source]); |
| 1470 } | 1554 } |
| 1471 | 1555 |
| 1472 test_instanceMethodNameCollidesWithSuperclassStatic_field2() async { | 1556 test_instanceMethodNameCollidesWithSuperclassStatic_field2() async { |
| 1473 Source source = addSource(r''' | 1557 Source source = addSource(r''' |
| 1474 class A { | 1558 class A { |
| 1475 static var n; | 1559 static var n; |
| 1476 } | 1560 } |
| 1477 class B extends A { | 1561 class B extends A { |
| 1478 } | 1562 } |
| 1479 class C extends B { | 1563 class C extends B { |
| 1480 void n() {} | 1564 void n() {} |
| 1481 }'''); | 1565 }'''); |
| 1482 await assertErrors(source, [ | 1566 await computeAnalysisResult(source); |
| 1567 assertErrors(source, [ |
| 1483 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC | 1568 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC |
| 1484 ]); | 1569 ]); |
| 1485 verify([source]); | 1570 verify([source]); |
| 1486 } | 1571 } |
| 1487 | 1572 |
| 1488 test_instanceMethodNameCollidesWithSuperclassStatic_getter() async { | 1573 test_instanceMethodNameCollidesWithSuperclassStatic_getter() async { |
| 1489 Source source = addSource(r''' | 1574 Source source = addSource(r''' |
| 1490 class A { | 1575 class A { |
| 1491 static get n {return 0;} | 1576 static get n {return 0;} |
| 1492 } | 1577 } |
| 1493 class B extends A { | 1578 class B extends A { |
| 1494 void n() {} | 1579 void n() {} |
| 1495 }'''); | 1580 }'''); |
| 1496 await assertErrors(source, [ | 1581 await computeAnalysisResult(source); |
| 1582 assertErrors(source, [ |
| 1497 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC | 1583 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC |
| 1498 ]); | 1584 ]); |
| 1499 verify([source]); | 1585 verify([source]); |
| 1500 } | 1586 } |
| 1501 | 1587 |
| 1502 test_instanceMethodNameCollidesWithSuperclassStatic_getter2() async { | 1588 test_instanceMethodNameCollidesWithSuperclassStatic_getter2() async { |
| 1503 Source source = addSource(r''' | 1589 Source source = addSource(r''' |
| 1504 class A { | 1590 class A { |
| 1505 static get n {return 0;} | 1591 static get n {return 0;} |
| 1506 } | 1592 } |
| 1507 class B extends A { | 1593 class B extends A { |
| 1508 } | 1594 } |
| 1509 class C extends B { | 1595 class C extends B { |
| 1510 void n() {} | 1596 void n() {} |
| 1511 }'''); | 1597 }'''); |
| 1512 await assertErrors(source, [ | 1598 await computeAnalysisResult(source); |
| 1599 assertErrors(source, [ |
| 1513 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC | 1600 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC |
| 1514 ]); | 1601 ]); |
| 1515 verify([source]); | 1602 verify([source]); |
| 1516 } | 1603 } |
| 1517 | 1604 |
| 1518 test_instanceMethodNameCollidesWithSuperclassStatic_interface() async { | 1605 test_instanceMethodNameCollidesWithSuperclassStatic_interface() async { |
| 1519 Source source = addSource(r''' | 1606 Source source = addSource(r''' |
| 1520 class Base { | 1607 class Base { |
| 1521 static foo() {} | 1608 static foo() {} |
| 1522 } | 1609 } |
| 1523 abstract class Ifc { | 1610 abstract class Ifc { |
| 1524 foo(); | 1611 foo(); |
| 1525 } | 1612 } |
| 1526 class C extends Base implements Ifc { | 1613 class C extends Base implements Ifc { |
| 1527 foo() {} | 1614 foo() {} |
| 1528 } | 1615 } |
| 1529 '''); | 1616 '''); |
| 1530 await assertErrors(source, [ | 1617 await computeAnalysisResult(source); |
| 1618 assertErrors(source, [ |
| 1531 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC | 1619 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC |
| 1532 ]); | 1620 ]); |
| 1533 verify([source]); | 1621 verify([source]); |
| 1534 } | 1622 } |
| 1535 | 1623 |
| 1536 test_instanceMethodNameCollidesWithSuperclassStatic_method() async { | 1624 test_instanceMethodNameCollidesWithSuperclassStatic_method() async { |
| 1537 Source source = addSource(r''' | 1625 Source source = addSource(r''' |
| 1538 class A { | 1626 class A { |
| 1539 static n () {} | 1627 static n () {} |
| 1540 } | 1628 } |
| 1541 class B extends A { | 1629 class B extends A { |
| 1542 void n() {} | 1630 void n() {} |
| 1543 }'''); | 1631 }'''); |
| 1544 await assertErrors(source, [ | 1632 await computeAnalysisResult(source); |
| 1633 assertErrors(source, [ |
| 1545 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC | 1634 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC |
| 1546 ]); | 1635 ]); |
| 1547 verify([source]); | 1636 verify([source]); |
| 1548 } | 1637 } |
| 1549 | 1638 |
| 1550 test_instanceMethodNameCollidesWithSuperclassStatic_method2() async { | 1639 test_instanceMethodNameCollidesWithSuperclassStatic_method2() async { |
| 1551 Source source = addSource(r''' | 1640 Source source = addSource(r''' |
| 1552 class A { | 1641 class A { |
| 1553 static n () {} | 1642 static n () {} |
| 1554 } | 1643 } |
| 1555 class B extends A { | 1644 class B extends A { |
| 1556 } | 1645 } |
| 1557 class C extends B { | 1646 class C extends B { |
| 1558 void n() {} | 1647 void n() {} |
| 1559 }'''); | 1648 }'''); |
| 1560 await assertErrors(source, [ | 1649 await computeAnalysisResult(source); |
| 1650 assertErrors(source, [ |
| 1561 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC | 1651 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC |
| 1562 ]); | 1652 ]); |
| 1563 verify([source]); | 1653 verify([source]); |
| 1564 } | 1654 } |
| 1565 | 1655 |
| 1566 test_instanceMethodNameCollidesWithSuperclassStatic_setter() async { | 1656 test_instanceMethodNameCollidesWithSuperclassStatic_setter() async { |
| 1567 Source source = addSource(r''' | 1657 Source source = addSource(r''' |
| 1568 class A { | 1658 class A { |
| 1569 static set n(int x) {} | 1659 static set n(int x) {} |
| 1570 } | 1660 } |
| 1571 class B extends A { | 1661 class B extends A { |
| 1572 void n() {} | 1662 void n() {} |
| 1573 }'''); | 1663 }'''); |
| 1574 await assertErrors(source, [ | 1664 await computeAnalysisResult(source); |
| 1665 assertErrors(source, [ |
| 1575 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC | 1666 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC |
| 1576 ]); | 1667 ]); |
| 1577 verify([source]); | 1668 verify([source]); |
| 1578 } | 1669 } |
| 1579 | 1670 |
| 1580 test_instanceMethodNameCollidesWithSuperclassStatic_setter2() async { | 1671 test_instanceMethodNameCollidesWithSuperclassStatic_setter2() async { |
| 1581 Source source = addSource(r''' | 1672 Source source = addSource(r''' |
| 1582 class A { | 1673 class A { |
| 1583 static set n(int x) {} | 1674 static set n(int x) {} |
| 1584 } | 1675 } |
| 1585 class B extends A { | 1676 class B extends A { |
| 1586 } | 1677 } |
| 1587 class C extends B { | 1678 class C extends B { |
| 1588 void n() {} | 1679 void n() {} |
| 1589 }'''); | 1680 }'''); |
| 1590 await assertErrors(source, [ | 1681 await computeAnalysisResult(source); |
| 1682 assertErrors(source, [ |
| 1591 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC | 1683 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC |
| 1592 ]); | 1684 ]); |
| 1593 verify([source]); | 1685 verify([source]); |
| 1594 } | 1686 } |
| 1595 | 1687 |
| 1596 test_invalidGetterOverrideReturnType() async { | 1688 test_invalidGetterOverrideReturnType() async { |
| 1597 Source source = addSource(r''' | 1689 Source source = addSource(r''' |
| 1598 class A { | 1690 class A { |
| 1599 int get g { return 0; } | 1691 int get g { return 0; } |
| 1600 } | 1692 } |
| 1601 class B extends A { | 1693 class B extends A { |
| 1602 String get g { return 'a'; } | 1694 String get g { return 'a'; } |
| 1603 }'''); | 1695 }'''); |
| 1604 await assertErrors( | 1696 await computeAnalysisResult(source); |
| 1697 assertErrors( |
| 1605 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]); | 1698 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]); |
| 1606 verify([source]); | 1699 verify([source]); |
| 1607 } | 1700 } |
| 1608 | 1701 |
| 1609 test_invalidGetterOverrideReturnType_implicit() async { | 1702 test_invalidGetterOverrideReturnType_implicit() async { |
| 1610 Source source = addSource(r''' | 1703 Source source = addSource(r''' |
| 1611 class A { | 1704 class A { |
| 1612 String f; | 1705 String f; |
| 1613 } | 1706 } |
| 1614 class B extends A { | 1707 class B extends A { |
| 1615 int f; | 1708 int f; |
| 1616 }'''); | 1709 }'''); |
| 1617 await assertErrors(source, [ | 1710 await computeAnalysisResult(source); |
| 1711 assertErrors(source, [ |
| 1618 StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE, | 1712 StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE, |
| 1619 StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE | 1713 StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE |
| 1620 ]); | 1714 ]); |
| 1621 verify([source]); | 1715 verify([source]); |
| 1622 } | 1716 } |
| 1623 | 1717 |
| 1624 test_invalidGetterOverrideReturnType_twoInterfaces() async { | 1718 test_invalidGetterOverrideReturnType_twoInterfaces() async { |
| 1625 // test from language/override_inheritance_field_test_11.dart | 1719 // test from language/override_inheritance_field_test_11.dart |
| 1626 Source source = addSource(r''' | 1720 Source source = addSource(r''' |
| 1627 abstract class I { | 1721 abstract class I { |
| 1628 int get getter => null; | 1722 int get getter => null; |
| 1629 } | 1723 } |
| 1630 abstract class J { | 1724 abstract class J { |
| 1631 num get getter => null; | 1725 num get getter => null; |
| 1632 } | 1726 } |
| 1633 abstract class A implements I, J {} | 1727 abstract class A implements I, J {} |
| 1634 class B extends A { | 1728 class B extends A { |
| 1635 String get getter => null; | 1729 String get getter => null; |
| 1636 }'''); | 1730 }'''); |
| 1637 await assertErrors( | 1731 await computeAnalysisResult(source); |
| 1732 assertErrors( |
| 1638 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]); | 1733 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]); |
| 1639 verify([source]); | 1734 verify([source]); |
| 1640 } | 1735 } |
| 1641 | 1736 |
| 1642 test_invalidGetterOverrideReturnType_twoInterfaces_conflicting() async { | 1737 test_invalidGetterOverrideReturnType_twoInterfaces_conflicting() async { |
| 1643 Source source = addSource(r''' | 1738 Source source = addSource(r''' |
| 1644 abstract class I<U> { | 1739 abstract class I<U> { |
| 1645 U get g => null; | 1740 U get g => null; |
| 1646 } | 1741 } |
| 1647 abstract class J<V> { | 1742 abstract class J<V> { |
| 1648 V get g => null; | 1743 V get g => null; |
| 1649 } | 1744 } |
| 1650 class B implements I<int>, J<String> { | 1745 class B implements I<int>, J<String> { |
| 1651 double get g => null; | 1746 double get g => null; |
| 1652 }'''); | 1747 }'''); |
| 1653 await assertErrors( | 1748 await computeAnalysisResult(source); |
| 1749 assertErrors( |
| 1654 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]); | 1750 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]); |
| 1655 verify([source]); | 1751 verify([source]); |
| 1656 } | 1752 } |
| 1657 | 1753 |
| 1658 test_invalidMethodOverrideNamedParamType() async { | 1754 test_invalidMethodOverrideNamedParamType() async { |
| 1659 Source source = addSource(r''' | 1755 Source source = addSource(r''' |
| 1660 class A { | 1756 class A { |
| 1661 m({int a}) {} | 1757 m({int a}) {} |
| 1662 } | 1758 } |
| 1663 class B implements A { | 1759 class B implements A { |
| 1664 m({String a}) {} | 1760 m({String a}) {} |
| 1665 }'''); | 1761 }'''); |
| 1666 await assertErrors( | 1762 await computeAnalysisResult(source); |
| 1763 assertErrors( |
| 1667 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE]); | 1764 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE]); |
| 1668 verify([source]); | 1765 verify([source]); |
| 1669 } | 1766 } |
| 1670 | 1767 |
| 1671 test_invalidMethodOverrideNormalParamType_interface() async { | 1768 test_invalidMethodOverrideNormalParamType_interface() async { |
| 1672 Source source = addSource(r''' | 1769 Source source = addSource(r''' |
| 1673 class A { | 1770 class A { |
| 1674 m(int a) {} | 1771 m(int a) {} |
| 1675 } | 1772 } |
| 1676 class B implements A { | 1773 class B implements A { |
| 1677 m(String a) {} | 1774 m(String a) {} |
| 1678 }'''); | 1775 }'''); |
| 1679 await assertErrors( | 1776 await computeAnalysisResult(source); |
| 1777 assertErrors( |
| 1680 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); | 1778 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); |
| 1681 verify([source]); | 1779 verify([source]); |
| 1682 } | 1780 } |
| 1683 | 1781 |
| 1684 test_invalidMethodOverrideNormalParamType_superclass() async { | 1782 test_invalidMethodOverrideNormalParamType_superclass() async { |
| 1685 Source source = addSource(r''' | 1783 Source source = addSource(r''' |
| 1686 class A { | 1784 class A { |
| 1687 m(int a) {} | 1785 m(int a) {} |
| 1688 } | 1786 } |
| 1689 class B extends A { | 1787 class B extends A { |
| 1690 m(String a) {} | 1788 m(String a) {} |
| 1691 }'''); | 1789 }'''); |
| 1692 await assertErrors( | 1790 await computeAnalysisResult(source); |
| 1791 assertErrors( |
| 1693 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); | 1792 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); |
| 1694 verify([source]); | 1793 verify([source]); |
| 1695 } | 1794 } |
| 1696 | 1795 |
| 1697 test_invalidMethodOverrideNormalParamType_superclass_interface() async { | 1796 test_invalidMethodOverrideNormalParamType_superclass_interface() async { |
| 1698 Source source = addSource(r''' | 1797 Source source = addSource(r''' |
| 1699 abstract class I<U> { | 1798 abstract class I<U> { |
| 1700 m(U u) => null; | 1799 m(U u) => null; |
| 1701 } | 1800 } |
| 1702 abstract class J<V> { | 1801 abstract class J<V> { |
| 1703 m(V v) => null; | 1802 m(V v) => null; |
| 1704 } | 1803 } |
| 1705 class B extends I<int> implements J<String> { | 1804 class B extends I<int> implements J<String> { |
| 1706 m(double d) {} | 1805 m(double d) {} |
| 1707 }'''); | 1806 }'''); |
| 1708 await assertErrors( | 1807 await computeAnalysisResult(source); |
| 1808 assertErrors( |
| 1709 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); | 1809 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); |
| 1710 verify([source]); | 1810 verify([source]); |
| 1711 } | 1811 } |
| 1712 | 1812 |
| 1713 test_invalidMethodOverrideNormalParamType_twoInterfaces() async { | 1813 test_invalidMethodOverrideNormalParamType_twoInterfaces() async { |
| 1714 Source source = addSource(r''' | 1814 Source source = addSource(r''' |
| 1715 abstract class I { | 1815 abstract class I { |
| 1716 m(int n); | 1816 m(int n); |
| 1717 } | 1817 } |
| 1718 abstract class J { | 1818 abstract class J { |
| 1719 m(num n); | 1819 m(num n); |
| 1720 } | 1820 } |
| 1721 abstract class A implements I, J {} | 1821 abstract class A implements I, J {} |
| 1722 class B extends A { | 1822 class B extends A { |
| 1723 m(String n) {} | 1823 m(String n) {} |
| 1724 }'''); | 1824 }'''); |
| 1725 await assertErrors( | 1825 await computeAnalysisResult(source); |
| 1826 assertErrors( |
| 1726 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); | 1827 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); |
| 1727 verify([source]); | 1828 verify([source]); |
| 1728 } | 1829 } |
| 1729 | 1830 |
| 1730 test_invalidMethodOverrideNormalParamType_twoInterfaces_conflicting() async { | 1831 test_invalidMethodOverrideNormalParamType_twoInterfaces_conflicting() async { |
| 1731 // language/override_inheritance_generic_test/08 | 1832 // language/override_inheritance_generic_test/08 |
| 1732 Source source = addSource(r''' | 1833 Source source = addSource(r''' |
| 1733 abstract class I<U> { | 1834 abstract class I<U> { |
| 1734 m(U u) => null; | 1835 m(U u) => null; |
| 1735 } | 1836 } |
| 1736 abstract class J<V> { | 1837 abstract class J<V> { |
| 1737 m(V v) => null; | 1838 m(V v) => null; |
| 1738 } | 1839 } |
| 1739 class B implements I<int>, J<String> { | 1840 class B implements I<int>, J<String> { |
| 1740 m(double d) {} | 1841 m(double d) {} |
| 1741 }'''); | 1842 }'''); |
| 1742 await assertErrors( | 1843 await computeAnalysisResult(source); |
| 1844 assertErrors( |
| 1743 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); | 1845 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); |
| 1744 verify([source]); | 1846 verify([source]); |
| 1745 } | 1847 } |
| 1746 | 1848 |
| 1747 test_invalidMethodOverrideOptionalParamType() async { | 1849 test_invalidMethodOverrideOptionalParamType() async { |
| 1748 Source source = addSource(r''' | 1850 Source source = addSource(r''' |
| 1749 class A { | 1851 class A { |
| 1750 m([int a]) {} | 1852 m([int a]) {} |
| 1751 } | 1853 } |
| 1752 class B implements A { | 1854 class B implements A { |
| 1753 m([String a]) {} | 1855 m([String a]) {} |
| 1754 }'''); | 1856 }'''); |
| 1755 await assertErrors(source, | 1857 await computeAnalysisResult(source); |
| 1858 assertErrors(source, |
| 1756 [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]); | 1859 [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]); |
| 1757 verify([source]); | 1860 verify([source]); |
| 1758 } | 1861 } |
| 1759 | 1862 |
| 1760 test_invalidMethodOverrideOptionalParamType_twoInterfaces() async { | 1863 test_invalidMethodOverrideOptionalParamType_twoInterfaces() async { |
| 1761 Source source = addSource(r''' | 1864 Source source = addSource(r''' |
| 1762 abstract class I { | 1865 abstract class I { |
| 1763 m([int n]); | 1866 m([int n]); |
| 1764 } | 1867 } |
| 1765 abstract class J { | 1868 abstract class J { |
| 1766 m([num n]); | 1869 m([num n]); |
| 1767 } | 1870 } |
| 1768 abstract class A implements I, J {} | 1871 abstract class A implements I, J {} |
| 1769 class B extends A { | 1872 class B extends A { |
| 1770 m([String n]) {} | 1873 m([String n]) {} |
| 1771 }'''); | 1874 }'''); |
| 1772 await assertErrors(source, | 1875 await computeAnalysisResult(source); |
| 1876 assertErrors(source, |
| 1773 [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]); | 1877 [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]); |
| 1774 verify([source]); | 1878 verify([source]); |
| 1775 } | 1879 } |
| 1776 | 1880 |
| 1777 test_invalidMethodOverrideReturnType_interface() async { | 1881 test_invalidMethodOverrideReturnType_interface() async { |
| 1778 Source source = addSource(r''' | 1882 Source source = addSource(r''' |
| 1779 class A { | 1883 class A { |
| 1780 int m() { return 0; } | 1884 int m() { return 0; } |
| 1781 } | 1885 } |
| 1782 class B implements A { | 1886 class B implements A { |
| 1783 String m() { return 'a'; } | 1887 String m() { return 'a'; } |
| 1784 }'''); | 1888 }'''); |
| 1785 await assertErrors( | 1889 await computeAnalysisResult(source); |
| 1890 assertErrors( |
| 1786 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); | 1891 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); |
| 1787 verify([source]); | 1892 verify([source]); |
| 1788 } | 1893 } |
| 1789 | 1894 |
| 1790 test_invalidMethodOverrideReturnType_interface_grandparent() async { | 1895 test_invalidMethodOverrideReturnType_interface_grandparent() async { |
| 1791 Source source = addSource(r''' | 1896 Source source = addSource(r''' |
| 1792 abstract class A { | 1897 abstract class A { |
| 1793 int m(); | 1898 int m(); |
| 1794 } | 1899 } |
| 1795 abstract class B implements A { | 1900 abstract class B implements A { |
| 1796 } | 1901 } |
| 1797 class C implements B { | 1902 class C implements B { |
| 1798 String m() { return 'a'; } | 1903 String m() { return 'a'; } |
| 1799 }'''); | 1904 }'''); |
| 1800 await assertErrors( | 1905 await computeAnalysisResult(source); |
| 1906 assertErrors( |
| 1801 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); | 1907 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); |
| 1802 verify([source]); | 1908 verify([source]); |
| 1803 } | 1909 } |
| 1804 | 1910 |
| 1805 test_invalidMethodOverrideReturnType_mixin() async { | 1911 test_invalidMethodOverrideReturnType_mixin() async { |
| 1806 Source source = addSource(r''' | 1912 Source source = addSource(r''' |
| 1807 class A { | 1913 class A { |
| 1808 int m() { return 0; } | 1914 int m() { return 0; } |
| 1809 } | 1915 } |
| 1810 class B extends Object with A { | 1916 class B extends Object with A { |
| 1811 String m() { return 'a'; } | 1917 String m() { return 'a'; } |
| 1812 }'''); | 1918 }'''); |
| 1813 await assertErrors( | 1919 await computeAnalysisResult(source); |
| 1920 assertErrors( |
| 1814 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); | 1921 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); |
| 1815 verify([source]); | 1922 verify([source]); |
| 1816 } | 1923 } |
| 1817 | 1924 |
| 1818 test_invalidMethodOverrideReturnType_superclass() async { | 1925 test_invalidMethodOverrideReturnType_superclass() async { |
| 1819 Source source = addSource(r''' | 1926 Source source = addSource(r''' |
| 1820 class A { | 1927 class A { |
| 1821 int m() { return 0; } | 1928 int m() { return 0; } |
| 1822 } | 1929 } |
| 1823 class B extends A { | 1930 class B extends A { |
| 1824 String m() { return 'a'; } | 1931 String m() { return 'a'; } |
| 1825 }'''); | 1932 }'''); |
| 1826 await assertErrors( | 1933 await computeAnalysisResult(source); |
| 1934 assertErrors( |
| 1827 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); | 1935 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); |
| 1828 verify([source]); | 1936 verify([source]); |
| 1829 } | 1937 } |
| 1830 | 1938 |
| 1831 test_invalidMethodOverrideReturnType_superclass_grandparent() async { | 1939 test_invalidMethodOverrideReturnType_superclass_grandparent() async { |
| 1832 Source source = addSource(r''' | 1940 Source source = addSource(r''' |
| 1833 class A { | 1941 class A { |
| 1834 int m() { return 0; } | 1942 int m() { return 0; } |
| 1835 } | 1943 } |
| 1836 class B extends A { | 1944 class B extends A { |
| 1837 } | 1945 } |
| 1838 class C extends B { | 1946 class C extends B { |
| 1839 String m() { return 'a'; } | 1947 String m() { return 'a'; } |
| 1840 }'''); | 1948 }'''); |
| 1841 await assertErrors( | 1949 await computeAnalysisResult(source); |
| 1950 assertErrors( |
| 1842 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); | 1951 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); |
| 1843 verify([source]); | 1952 verify([source]); |
| 1844 } | 1953 } |
| 1845 | 1954 |
| 1846 test_invalidMethodOverrideReturnType_twoInterfaces() async { | 1955 test_invalidMethodOverrideReturnType_twoInterfaces() async { |
| 1847 Source source = addSource(r''' | 1956 Source source = addSource(r''' |
| 1848 abstract class I { | 1957 abstract class I { |
| 1849 int m(); | 1958 int m(); |
| 1850 } | 1959 } |
| 1851 abstract class J { | 1960 abstract class J { |
| 1852 num m(); | 1961 num m(); |
| 1853 } | 1962 } |
| 1854 abstract class A implements I, J {} | 1963 abstract class A implements I, J {} |
| 1855 class B extends A { | 1964 class B extends A { |
| 1856 String m() => ''; | 1965 String m() => ''; |
| 1857 }'''); | 1966 }'''); |
| 1858 await assertErrors( | 1967 await computeAnalysisResult(source); |
| 1968 assertErrors( |
| 1859 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); | 1969 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); |
| 1860 verify([source]); | 1970 verify([source]); |
| 1861 } | 1971 } |
| 1862 | 1972 |
| 1863 test_invalidMethodOverrideReturnType_void() async { | 1973 test_invalidMethodOverrideReturnType_void() async { |
| 1864 Source source = addSource(r''' | 1974 Source source = addSource(r''' |
| 1865 class A { | 1975 class A { |
| 1866 int m() { return 0; } | 1976 int m() { return 0; } |
| 1867 } | 1977 } |
| 1868 class B extends A { | 1978 class B extends A { |
| 1869 void m() {} | 1979 void m() {} |
| 1870 }'''); | 1980 }'''); |
| 1871 await assertErrors( | 1981 await computeAnalysisResult(source); |
| 1982 assertErrors( |
| 1872 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); | 1983 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); |
| 1873 verify([source]); | 1984 verify([source]); |
| 1874 } | 1985 } |
| 1875 | 1986 |
| 1876 test_invalidOverride_defaultOverridesNonDefault() async { | 1987 test_invalidOverride_defaultOverridesNonDefault() async { |
| 1877 // If the base class provided an explicit value for a default parameter, | 1988 // If the base class provided an explicit value for a default parameter, |
| 1878 // then it is a static warning for the derived class to provide a different | 1989 // then it is a static warning for the derived class to provide a different |
| 1879 // value, even if implicitly. | 1990 // value, even if implicitly. |
| 1880 Source source = addSource(r''' | 1991 Source source = addSource(r''' |
| 1881 class A { | 1992 class A { |
| 1882 foo([x = 1]) {} | 1993 foo([x = 1]) {} |
| 1883 } | 1994 } |
| 1884 class B extends A { | 1995 class B extends A { |
| 1885 foo([x]) {} | 1996 foo([x]) {} |
| 1886 } | 1997 } |
| 1887 '''); | 1998 '''); |
| 1888 await assertErrors(source, [ | 1999 await computeAnalysisResult(source); |
| 2000 assertErrors(source, [ |
| 1889 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL | 2001 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL |
| 1890 ]); | 2002 ]); |
| 1891 verify([source]); | 2003 verify([source]); |
| 1892 } | 2004 } |
| 1893 | 2005 |
| 1894 test_invalidOverride_defaultOverridesNonDefault_named() async { | 2006 test_invalidOverride_defaultOverridesNonDefault_named() async { |
| 1895 // If the base class provided an explicit value for a default parameter, | 2007 // If the base class provided an explicit value for a default parameter, |
| 1896 // then it is a static warning for the derived class to provide a different | 2008 // then it is a static warning for the derived class to provide a different |
| 1897 // value, even if implicitly. | 2009 // value, even if implicitly. |
| 1898 Source source = addSource(r''' | 2010 Source source = addSource(r''' |
| 1899 class A { | 2011 class A { |
| 1900 foo({x: 1}) {} | 2012 foo({x: 1}) {} |
| 1901 } | 2013 } |
| 1902 class B extends A { | 2014 class B extends A { |
| 1903 foo({x}) {} | 2015 foo({x}) {} |
| 1904 } | 2016 } |
| 1905 '''); | 2017 '''); |
| 1906 await assertErrors(source, | 2018 await computeAnalysisResult(source); |
| 2019 assertErrors(source, |
| 1907 [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED]); | 2020 [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED]); |
| 1908 verify([source]); | 2021 verify([source]); |
| 1909 } | 2022 } |
| 1910 | 2023 |
| 1911 test_invalidOverride_defaultOverridesNonDefaultNull() async { | 2024 test_invalidOverride_defaultOverridesNonDefaultNull() async { |
| 1912 // If the base class provided an explicit null value for a default | 2025 // If the base class provided an explicit null value for a default |
| 1913 // parameter, then it is ok for the derived class to let the default value | 2026 // parameter, then it is ok for the derived class to let the default value |
| 1914 // be implicit, because the implicit default value of null matches the | 2027 // be implicit, because the implicit default value of null matches the |
| 1915 // explicit default value of null. | 2028 // explicit default value of null. |
| 1916 Source source = addSource(r''' | 2029 Source source = addSource(r''' |
| 1917 class A { | 2030 class A { |
| 1918 foo([x = null]) {} | 2031 foo([x = null]) {} |
| 1919 } | 2032 } |
| 1920 class B extends A { | 2033 class B extends A { |
| 1921 foo([x]) {} | 2034 foo([x]) {} |
| 1922 } | 2035 } |
| 1923 '''); | 2036 '''); |
| 1924 await assertNoErrors(source); | 2037 await computeAnalysisResult(source); |
| 2038 assertNoErrors(source); |
| 1925 verify([source]); | 2039 verify([source]); |
| 1926 } | 2040 } |
| 1927 | 2041 |
| 1928 test_invalidOverride_defaultOverridesNonDefaultNull_named() async { | 2042 test_invalidOverride_defaultOverridesNonDefaultNull_named() async { |
| 1929 // If the base class provided an explicit null value for a default | 2043 // If the base class provided an explicit null value for a default |
| 1930 // parameter, then it is ok for the derived class to let the default value | 2044 // parameter, then it is ok for the derived class to let the default value |
| 1931 // be implicit, because the implicit default value of null matches the | 2045 // be implicit, because the implicit default value of null matches the |
| 1932 // explicit default value of null. | 2046 // explicit default value of null. |
| 1933 Source source = addSource(r''' | 2047 Source source = addSource(r''' |
| 1934 class A { | 2048 class A { |
| 1935 foo({x: null}) {} | 2049 foo({x: null}) {} |
| 1936 } | 2050 } |
| 1937 class B extends A { | 2051 class B extends A { |
| 1938 foo({x}) {} | 2052 foo({x}) {} |
| 1939 } | 2053 } |
| 1940 '''); | 2054 '''); |
| 1941 await assertNoErrors(source); | 2055 await computeAnalysisResult(source); |
| 2056 assertNoErrors(source); |
| 1942 verify([source]); | 2057 verify([source]); |
| 1943 } | 2058 } |
| 1944 | 2059 |
| 1945 test_invalidOverride_nonDefaultOverridesDefault() async { | 2060 test_invalidOverride_nonDefaultOverridesDefault() async { |
| 1946 // If the base class lets the default parameter be implicit, then it is ok | 2061 // If the base class lets the default parameter be implicit, then it is ok |
| 1947 // for the derived class to provide an explicit default value, even if it's | 2062 // for the derived class to provide an explicit default value, even if it's |
| 1948 // not null. | 2063 // not null. |
| 1949 Source source = addSource(r''' | 2064 Source source = addSource(r''' |
| 1950 class A { | 2065 class A { |
| 1951 foo([x]) {} | 2066 foo([x]) {} |
| 1952 } | 2067 } |
| 1953 class B extends A { | 2068 class B extends A { |
| 1954 foo([x = 1]) {} | 2069 foo([x = 1]) {} |
| 1955 } | 2070 } |
| 1956 '''); | 2071 '''); |
| 1957 await assertNoErrors(source); | 2072 await computeAnalysisResult(source); |
| 2073 assertNoErrors(source); |
| 1958 verify([source]); | 2074 verify([source]); |
| 1959 } | 2075 } |
| 1960 | 2076 |
| 1961 test_invalidOverride_nonDefaultOverridesDefault_named() async { | 2077 test_invalidOverride_nonDefaultOverridesDefault_named() async { |
| 1962 // If the base class lets the default parameter be implicit, then it is ok | 2078 // If the base class lets the default parameter be implicit, then it is ok |
| 1963 // for the derived class to provide an explicit default value, even if it's | 2079 // for the derived class to provide an explicit default value, even if it's |
| 1964 // not null. | 2080 // not null. |
| 1965 Source source = addSource(r''' | 2081 Source source = addSource(r''' |
| 1966 class A { | 2082 class A { |
| 1967 foo({x}) {} | 2083 foo({x}) {} |
| 1968 } | 2084 } |
| 1969 class B extends A { | 2085 class B extends A { |
| 1970 foo({x: 1}) {} | 2086 foo({x: 1}) {} |
| 1971 } | 2087 } |
| 1972 '''); | 2088 '''); |
| 1973 await assertNoErrors(source); | 2089 await computeAnalysisResult(source); |
| 2090 assertNoErrors(source); |
| 1974 verify([source]); | 2091 verify([source]); |
| 1975 } | 2092 } |
| 1976 | 2093 |
| 1977 test_invalidOverrideDifferentDefaultValues_named() async { | 2094 test_invalidOverrideDifferentDefaultValues_named() async { |
| 1978 Source source = addSource(r''' | 2095 Source source = addSource(r''' |
| 1979 class A { | 2096 class A { |
| 1980 m({int p : 0}) {} | 2097 m({int p : 0}) {} |
| 1981 } | 2098 } |
| 1982 class B extends A { | 2099 class B extends A { |
| 1983 m({int p : 1}) {} | 2100 m({int p : 1}) {} |
| 1984 }'''); | 2101 }'''); |
| 1985 await assertErrors(source, | 2102 await computeAnalysisResult(source); |
| 2103 assertErrors(source, |
| 1986 [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED]); | 2104 [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED]); |
| 1987 verify([source]); | 2105 verify([source]); |
| 1988 } | 2106 } |
| 1989 | 2107 |
| 1990 test_invalidOverrideDifferentDefaultValues_positional() async { | 2108 test_invalidOverrideDifferentDefaultValues_positional() async { |
| 1991 Source source = addSource(r''' | 2109 Source source = addSource(r''' |
| 1992 class A { | 2110 class A { |
| 1993 m([int p = 0]) {} | 2111 m([int p = 0]) {} |
| 1994 } | 2112 } |
| 1995 class B extends A { | 2113 class B extends A { |
| 1996 m([int p = 1]) {} | 2114 m([int p = 1]) {} |
| 1997 }'''); | 2115 }'''); |
| 1998 await assertErrors(source, [ | 2116 await computeAnalysisResult(source); |
| 2117 assertErrors(source, [ |
| 1999 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL | 2118 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL |
| 2000 ]); | 2119 ]); |
| 2001 verify([source]); | 2120 verify([source]); |
| 2002 } | 2121 } |
| 2003 | 2122 |
| 2004 test_invalidOverrideNamed_fewerNamedParameters() async { | 2123 test_invalidOverrideNamed_fewerNamedParameters() async { |
| 2005 Source source = addSource(r''' | 2124 Source source = addSource(r''' |
| 2006 class A { | 2125 class A { |
| 2007 m({a, b}) {} | 2126 m({a, b}) {} |
| 2008 } | 2127 } |
| 2009 class B extends A { | 2128 class B extends A { |
| 2010 m({a}) {} | 2129 m({a}) {} |
| 2011 }'''); | 2130 }'''); |
| 2012 await assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]); | 2131 await computeAnalysisResult(source); |
| 2132 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]); |
| 2013 verify([source]); | 2133 verify([source]); |
| 2014 } | 2134 } |
| 2015 | 2135 |
| 2016 test_invalidOverrideNamed_missingNamedParameter() async { | 2136 test_invalidOverrideNamed_missingNamedParameter() async { |
| 2017 Source source = addSource(r''' | 2137 Source source = addSource(r''' |
| 2018 class A { | 2138 class A { |
| 2019 m({a, b}) {} | 2139 m({a, b}) {} |
| 2020 } | 2140 } |
| 2021 class B extends A { | 2141 class B extends A { |
| 2022 m({a, c}) {} | 2142 m({a, c}) {} |
| 2023 }'''); | 2143 }'''); |
| 2024 await assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]); | 2144 await computeAnalysisResult(source); |
| 2145 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]); |
| 2025 verify([source]); | 2146 verify([source]); |
| 2026 } | 2147 } |
| 2027 | 2148 |
| 2028 test_invalidOverridePositional_optional() async { | 2149 test_invalidOverridePositional_optional() async { |
| 2029 Source source = addSource(r''' | 2150 Source source = addSource(r''' |
| 2030 class A { | 2151 class A { |
| 2031 m([a, b]) {} | 2152 m([a, b]) {} |
| 2032 } | 2153 } |
| 2033 class B extends A { | 2154 class B extends A { |
| 2034 m([a]) {} | 2155 m([a]) {} |
| 2035 }'''); | 2156 }'''); |
| 2036 await assertErrors( | 2157 await computeAnalysisResult(source); |
| 2037 source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); | 2158 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); |
| 2038 verify([source]); | 2159 verify([source]); |
| 2039 } | 2160 } |
| 2040 | 2161 |
| 2041 test_invalidOverridePositional_optionalAndRequired() async { | 2162 test_invalidOverridePositional_optionalAndRequired() async { |
| 2042 Source source = addSource(r''' | 2163 Source source = addSource(r''' |
| 2043 class A { | 2164 class A { |
| 2044 m(a, b, [c, d]) {} | 2165 m(a, b, [c, d]) {} |
| 2045 } | 2166 } |
| 2046 class B extends A { | 2167 class B extends A { |
| 2047 m(a, b, [c]) {} | 2168 m(a, b, [c]) {} |
| 2048 }'''); | 2169 }'''); |
| 2049 await assertErrors( | 2170 await computeAnalysisResult(source); |
| 2050 source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); | 2171 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); |
| 2051 verify([source]); | 2172 verify([source]); |
| 2052 } | 2173 } |
| 2053 | 2174 |
| 2054 test_invalidOverridePositional_optionalAndRequired2() async { | 2175 test_invalidOverridePositional_optionalAndRequired2() async { |
| 2055 Source source = addSource(r''' | 2176 Source source = addSource(r''' |
| 2056 class A { | 2177 class A { |
| 2057 m(a, b, [c, d]) {} | 2178 m(a, b, [c, d]) {} |
| 2058 } | 2179 } |
| 2059 class B extends A { | 2180 class B extends A { |
| 2060 m(a, [c, d]) {} | 2181 m(a, [c, d]) {} |
| 2061 }'''); | 2182 }'''); |
| 2062 await assertErrors( | 2183 await computeAnalysisResult(source); |
| 2063 source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); | 2184 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); |
| 2064 verify([source]); | 2185 verify([source]); |
| 2065 } | 2186 } |
| 2066 | 2187 |
| 2067 test_invalidOverrideRequired() async { | 2188 test_invalidOverrideRequired() async { |
| 2068 Source source = addSource(r''' | 2189 Source source = addSource(r''' |
| 2069 class A { | 2190 class A { |
| 2070 m(a) {} | 2191 m(a) {} |
| 2071 } | 2192 } |
| 2072 class B extends A { | 2193 class B extends A { |
| 2073 m(a, b) {} | 2194 m(a, b) {} |
| 2074 }'''); | 2195 }'''); |
| 2075 await assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_REQUIRED]); | 2196 await computeAnalysisResult(source); |
| 2197 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_REQUIRED]); |
| 2076 verify([source]); | 2198 verify([source]); |
| 2077 } | 2199 } |
| 2078 | 2200 |
| 2079 test_invalidSetterOverrideNormalParamType() async { | 2201 test_invalidSetterOverrideNormalParamType() async { |
| 2080 Source source = addSource(r''' | 2202 Source source = addSource(r''' |
| 2081 class A { | 2203 class A { |
| 2082 void set s(int v) {} | 2204 void set s(int v) {} |
| 2083 } | 2205 } |
| 2084 class B extends A { | 2206 class B extends A { |
| 2085 void set s(String v) {} | 2207 void set s(String v) {} |
| 2086 }'''); | 2208 }'''); |
| 2087 await assertErrors( | 2209 await computeAnalysisResult(source); |
| 2210 assertErrors( |
| 2088 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); | 2211 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); |
| 2089 verify([source]); | 2212 verify([source]); |
| 2090 } | 2213 } |
| 2091 | 2214 |
| 2092 test_invalidSetterOverrideNormalParamType_superclass_interface() async { | 2215 test_invalidSetterOverrideNormalParamType_superclass_interface() async { |
| 2093 Source source = addSource(r''' | 2216 Source source = addSource(r''' |
| 2094 abstract class I { | 2217 abstract class I { |
| 2095 set setter14(int _) => null; | 2218 set setter14(int _) => null; |
| 2096 } | 2219 } |
| 2097 abstract class J { | 2220 abstract class J { |
| 2098 set setter14(num _) => null; | 2221 set setter14(num _) => null; |
| 2099 } | 2222 } |
| 2100 abstract class A extends I implements J {} | 2223 abstract class A extends I implements J {} |
| 2101 class B extends A { | 2224 class B extends A { |
| 2102 set setter14(String _) => null; | 2225 set setter14(String _) => null; |
| 2103 }'''); | 2226 }'''); |
| 2104 await assertErrors( | 2227 await computeAnalysisResult(source); |
| 2228 assertErrors( |
| 2105 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); | 2229 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); |
| 2106 verify([source]); | 2230 verify([source]); |
| 2107 } | 2231 } |
| 2108 | 2232 |
| 2109 test_invalidSetterOverrideNormalParamType_twoInterfaces() async { | 2233 test_invalidSetterOverrideNormalParamType_twoInterfaces() async { |
| 2110 // test from language/override_inheritance_field_test_34.dart | 2234 // test from language/override_inheritance_field_test_34.dart |
| 2111 Source source = addSource(r''' | 2235 Source source = addSource(r''' |
| 2112 abstract class I { | 2236 abstract class I { |
| 2113 set setter14(int _) => null; | 2237 set setter14(int _) => null; |
| 2114 } | 2238 } |
| 2115 abstract class J { | 2239 abstract class J { |
| 2116 set setter14(num _) => null; | 2240 set setter14(num _) => null; |
| 2117 } | 2241 } |
| 2118 abstract class A implements I, J {} | 2242 abstract class A implements I, J {} |
| 2119 class B extends A { | 2243 class B extends A { |
| 2120 set setter14(String _) => null; | 2244 set setter14(String _) => null; |
| 2121 }'''); | 2245 }'''); |
| 2122 await assertErrors( | 2246 await computeAnalysisResult(source); |
| 2247 assertErrors( |
| 2123 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); | 2248 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); |
| 2124 verify([source]); | 2249 verify([source]); |
| 2125 } | 2250 } |
| 2126 | 2251 |
| 2127 test_invalidSetterOverrideNormalParamType_twoInterfaces_conflicting() async { | 2252 test_invalidSetterOverrideNormalParamType_twoInterfaces_conflicting() async { |
| 2128 Source source = addSource(r''' | 2253 Source source = addSource(r''' |
| 2129 abstract class I<U> { | 2254 abstract class I<U> { |
| 2130 set s(U u) {} | 2255 set s(U u) {} |
| 2131 } | 2256 } |
| 2132 abstract class J<V> { | 2257 abstract class J<V> { |
| 2133 set s(V v) {} | 2258 set s(V v) {} |
| 2134 } | 2259 } |
| 2135 class B implements I<int>, J<String> { | 2260 class B implements I<int>, J<String> { |
| 2136 set s(double d) {} | 2261 set s(double d) {} |
| 2137 }'''); | 2262 }'''); |
| 2138 await assertErrors( | 2263 await computeAnalysisResult(source); |
| 2264 assertErrors( |
| 2139 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); | 2265 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); |
| 2140 verify([source]); | 2266 verify([source]); |
| 2141 } | 2267 } |
| 2142 | 2268 |
| 2143 test_listElementTypeNotAssignable() async { | 2269 test_listElementTypeNotAssignable() async { |
| 2144 Source source = addSource("var v = <String> [42];"); | 2270 Source source = addSource("var v = <String> [42];"); |
| 2145 await assertErrors( | 2271 await computeAnalysisResult(source); |
| 2146 source, [StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE]); | 2272 assertErrors(source, [StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE]); |
| 2147 verify([source]); | 2273 verify([source]); |
| 2148 } | 2274 } |
| 2149 | 2275 |
| 2150 test_mapKeyTypeNotAssignable() async { | 2276 test_mapKeyTypeNotAssignable() async { |
| 2151 Source source = addSource("var v = <String, int > {1 : 2};"); | 2277 Source source = addSource("var v = <String, int > {1 : 2};"); |
| 2152 await assertErrors( | 2278 await computeAnalysisResult(source); |
| 2153 source, [StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE]); | 2279 assertErrors(source, [StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE]); |
| 2154 verify([source]); | 2280 verify([source]); |
| 2155 } | 2281 } |
| 2156 | 2282 |
| 2157 test_mapValueTypeNotAssignable() async { | 2283 test_mapValueTypeNotAssignable() async { |
| 2158 Source source = addSource("var v = <String, String> {'a' : 2};"); | 2284 Source source = addSource("var v = <String, String> {'a' : 2};"); |
| 2159 await assertErrors( | 2285 await computeAnalysisResult(source); |
| 2160 source, [StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE]); | 2286 assertErrors(source, [StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE]); |
| 2161 verify([source]); | 2287 verify([source]); |
| 2162 } | 2288 } |
| 2163 | 2289 |
| 2164 test_mismatchedAccessorTypes_class() async { | 2290 test_mismatchedAccessorTypes_class() async { |
| 2165 Source source = addSource(r''' | 2291 Source source = addSource(r''' |
| 2166 class A { | 2292 class A { |
| 2167 int get g { return 0; } | 2293 int get g { return 0; } |
| 2168 set g(String v) {} | 2294 set g(String v) {} |
| 2169 }'''); | 2295 }'''); |
| 2170 await assertErrors( | 2296 await computeAnalysisResult(source); |
| 2297 assertErrors( |
| 2171 source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]); | 2298 source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]); |
| 2172 verify([source]); | 2299 verify([source]); |
| 2173 } | 2300 } |
| 2174 | 2301 |
| 2175 test_mismatchedAccessorTypes_getterAndSuperSetter() async { | 2302 test_mismatchedAccessorTypes_getterAndSuperSetter() async { |
| 2176 Source source = addSource(r''' | 2303 Source source = addSource(r''' |
| 2177 class A { | 2304 class A { |
| 2178 int get g { return 0; } | 2305 int get g { return 0; } |
| 2179 } | 2306 } |
| 2180 class B extends A { | 2307 class B extends A { |
| 2181 set g(String v) {} | 2308 set g(String v) {} |
| 2182 }'''); | 2309 }'''); |
| 2183 await assertErrors(source, | 2310 await computeAnalysisResult(source); |
| 2311 assertErrors(source, |
| 2184 [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]); | 2312 [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]); |
| 2185 verify([source]); | 2313 verify([source]); |
| 2186 } | 2314 } |
| 2187 | 2315 |
| 2188 test_mismatchedAccessorTypes_setterAndSuperGetter() async { | 2316 test_mismatchedAccessorTypes_setterAndSuperGetter() async { |
| 2189 Source source = addSource(r''' | 2317 Source source = addSource(r''' |
| 2190 class A { | 2318 class A { |
| 2191 set g(int v) {} | 2319 set g(int v) {} |
| 2192 } | 2320 } |
| 2193 class B extends A { | 2321 class B extends A { |
| 2194 String get g { return ''; } | 2322 String get g { return ''; } |
| 2195 }'''); | 2323 }'''); |
| 2196 await assertErrors(source, | 2324 await computeAnalysisResult(source); |
| 2325 assertErrors(source, |
| 2197 [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]); | 2326 [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]); |
| 2198 verify([source]); | 2327 verify([source]); |
| 2199 } | 2328 } |
| 2200 | 2329 |
| 2201 test_mismatchedAccessorTypes_topLevel() async { | 2330 test_mismatchedAccessorTypes_topLevel() async { |
| 2202 Source source = addSource(r''' | 2331 Source source = addSource(r''' |
| 2203 int get g { return 0; } | 2332 int get g { return 0; } |
| 2204 set g(String v) {}'''); | 2333 set g(String v) {}'''); |
| 2205 await assertErrors( | 2334 await computeAnalysisResult(source); |
| 2335 assertErrors( |
| 2206 source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]); | 2336 source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]); |
| 2207 verify([source]); | 2337 verify([source]); |
| 2208 } | 2338 } |
| 2209 | 2339 |
| 2210 test_missingEnumConstantInSwitch() async { | 2340 test_missingEnumConstantInSwitch() async { |
| 2211 Source source = addSource(r''' | 2341 Source source = addSource(r''' |
| 2212 enum E { ONE, TWO, THREE, FOUR } | 2342 enum E { ONE, TWO, THREE, FOUR } |
| 2213 bool odd(E e) { | 2343 bool odd(E e) { |
| 2214 switch (e) { | 2344 switch (e) { |
| 2215 case E.ONE: | 2345 case E.ONE: |
| 2216 case E.THREE: return true; | 2346 case E.THREE: return true; |
| 2217 } | 2347 } |
| 2218 return false; | 2348 return false; |
| 2219 }'''); | 2349 }'''); |
| 2220 await assertErrors(source, [ | 2350 await computeAnalysisResult(source); |
| 2351 assertErrors(source, [ |
| 2221 StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH, | 2352 StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH, |
| 2222 StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH | 2353 StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH |
| 2223 ]); | 2354 ]); |
| 2224 verify([source]); | 2355 verify([source]); |
| 2225 } | 2356 } |
| 2226 | 2357 |
| 2227 test_mixedReturnTypes_localFunction() async { | 2358 test_mixedReturnTypes_localFunction() async { |
| 2228 Source source = addSource(r''' | 2359 Source source = addSource(r''' |
| 2229 class C { | 2360 class C { |
| 2230 m(int x) { | 2361 m(int x) { |
| 2231 return (int y) { | 2362 return (int y) { |
| 2232 if (y < 0) { | 2363 if (y < 0) { |
| 2233 return; | 2364 return; |
| 2234 } | 2365 } |
| 2235 return 0; | 2366 return 0; |
| 2236 }; | 2367 }; |
| 2237 } | 2368 } |
| 2238 }'''); | 2369 }'''); |
| 2239 await assertErrors(source, [ | 2370 await computeAnalysisResult(source); |
| 2371 assertErrors(source, [ |
| 2240 StaticWarningCode.MIXED_RETURN_TYPES, | 2372 StaticWarningCode.MIXED_RETURN_TYPES, |
| 2241 StaticWarningCode.MIXED_RETURN_TYPES | 2373 StaticWarningCode.MIXED_RETURN_TYPES |
| 2242 ]); | 2374 ]); |
| 2243 verify([source]); | 2375 verify([source]); |
| 2244 } | 2376 } |
| 2245 | 2377 |
| 2246 test_mixedReturnTypes_method() async { | 2378 test_mixedReturnTypes_method() async { |
| 2247 Source source = addSource(r''' | 2379 Source source = addSource(r''' |
| 2248 class C { | 2380 class C { |
| 2249 m(int x) { | 2381 m(int x) { |
| 2250 if (x < 0) { | 2382 if (x < 0) { |
| 2251 return; | 2383 return; |
| 2252 } | 2384 } |
| 2253 return 0; | 2385 return 0; |
| 2254 } | 2386 } |
| 2255 }'''); | 2387 }'''); |
| 2256 await assertErrors(source, [ | 2388 await computeAnalysisResult(source); |
| 2389 assertErrors(source, [ |
| 2257 StaticWarningCode.MIXED_RETURN_TYPES, | 2390 StaticWarningCode.MIXED_RETURN_TYPES, |
| 2258 StaticWarningCode.MIXED_RETURN_TYPES | 2391 StaticWarningCode.MIXED_RETURN_TYPES |
| 2259 ]); | 2392 ]); |
| 2260 verify([source]); | 2393 verify([source]); |
| 2261 } | 2394 } |
| 2262 | 2395 |
| 2263 test_mixedReturnTypes_topLevelFunction() async { | 2396 test_mixedReturnTypes_topLevelFunction() async { |
| 2264 Source source = addSource(r''' | 2397 Source source = addSource(r''' |
| 2265 f(int x) { | 2398 f(int x) { |
| 2266 if (x < 0) { | 2399 if (x < 0) { |
| 2267 return; | 2400 return; |
| 2268 } | 2401 } |
| 2269 return 0; | 2402 return 0; |
| 2270 }'''); | 2403 }'''); |
| 2271 await assertErrors(source, [ | 2404 await computeAnalysisResult(source); |
| 2405 assertErrors(source, [ |
| 2272 StaticWarningCode.MIXED_RETURN_TYPES, | 2406 StaticWarningCode.MIXED_RETURN_TYPES, |
| 2273 StaticWarningCode.MIXED_RETURN_TYPES | 2407 StaticWarningCode.MIXED_RETURN_TYPES |
| 2274 ]); | 2408 ]); |
| 2275 verify([source]); | 2409 verify([source]); |
| 2276 } | 2410 } |
| 2277 | 2411 |
| 2278 test_newWithAbstractClass() async { | 2412 test_newWithAbstractClass() async { |
| 2279 Source source = addSource(r''' | 2413 Source source = addSource(r''' |
| 2280 abstract class A {} | 2414 abstract class A {} |
| 2281 void f() { | 2415 void f() { |
| 2282 A a = new A(); | 2416 A a = new A(); |
| 2283 }'''); | 2417 }'''); |
| 2284 await assertErrors(source, [StaticWarningCode.NEW_WITH_ABSTRACT_CLASS]); | 2418 await computeAnalysisResult(source); |
| 2419 assertErrors(source, [StaticWarningCode.NEW_WITH_ABSTRACT_CLASS]); |
| 2285 verify([source]); | 2420 verify([source]); |
| 2286 } | 2421 } |
| 2287 | 2422 |
| 2288 test_newWithInvalidTypeParameters() async { | 2423 test_newWithInvalidTypeParameters() async { |
| 2289 Source source = addSource(r''' | 2424 Source source = addSource(r''' |
| 2290 class A {} | 2425 class A {} |
| 2291 f() { return new A<A>(); }'''); | 2426 f() { return new A<A>(); }'''); |
| 2292 await assertErrors( | 2427 await computeAnalysisResult(source); |
| 2293 source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); | 2428 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); |
| 2294 verify([source]); | 2429 verify([source]); |
| 2295 } | 2430 } |
| 2296 | 2431 |
| 2297 test_newWithInvalidTypeParameters_tooFew() async { | 2432 test_newWithInvalidTypeParameters_tooFew() async { |
| 2298 Source source = addSource(r''' | 2433 Source source = addSource(r''' |
| 2299 class A {} | 2434 class A {} |
| 2300 class C<K, V> {} | 2435 class C<K, V> {} |
| 2301 f(p) { | 2436 f(p) { |
| 2302 return new C<A>(); | 2437 return new C<A>(); |
| 2303 }'''); | 2438 }'''); |
| 2304 await assertErrors( | 2439 await computeAnalysisResult(source); |
| 2305 source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); | 2440 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); |
| 2306 verify([source]); | 2441 verify([source]); |
| 2307 } | 2442 } |
| 2308 | 2443 |
| 2309 test_newWithInvalidTypeParameters_tooMany() async { | 2444 test_newWithInvalidTypeParameters_tooMany() async { |
| 2310 Source source = addSource(r''' | 2445 Source source = addSource(r''' |
| 2311 class A {} | 2446 class A {} |
| 2312 class C<E> {} | 2447 class C<E> {} |
| 2313 f(p) { | 2448 f(p) { |
| 2314 return new C<A, A>(); | 2449 return new C<A, A>(); |
| 2315 }'''); | 2450 }'''); |
| 2316 await assertErrors( | 2451 await computeAnalysisResult(source); |
| 2317 source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); | 2452 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); |
| 2318 verify([source]); | 2453 verify([source]); |
| 2319 } | 2454 } |
| 2320 | 2455 |
| 2321 test_newWithNonType() async { | 2456 test_newWithNonType() async { |
| 2322 Source source = addSource(r''' | 2457 Source source = addSource(r''' |
| 2323 var A = 0; | 2458 var A = 0; |
| 2324 void f() { | 2459 void f() { |
| 2325 var a = new A(); | 2460 var a = new A(); |
| 2326 }'''); | 2461 }'''); |
| 2327 await assertErrors(source, [StaticWarningCode.NEW_WITH_NON_TYPE]); | 2462 await computeAnalysisResult(source); |
| 2463 assertErrors(source, [StaticWarningCode.NEW_WITH_NON_TYPE]); |
| 2328 verify([source]); | 2464 verify([source]); |
| 2329 } | 2465 } |
| 2330 | 2466 |
| 2331 test_newWithNonType_fromLibrary() async { | 2467 test_newWithNonType_fromLibrary() async { |
| 2332 Source source1 = addNamedSource("/lib.dart", "class B {}"); | 2468 Source source1 = addNamedSource("/lib.dart", "class B {}"); |
| 2333 Source source2 = addNamedSource( | 2469 Source source2 = addNamedSource( |
| 2334 "/lib2.dart", | 2470 "/lib2.dart", |
| 2335 r''' | 2471 r''' |
| 2336 import 'lib.dart' as lib; | 2472 import 'lib.dart' as lib; |
| 2337 void f() { | 2473 void f() { |
| 2338 var a = new lib.A(); | 2474 var a = new lib.A(); |
| 2339 } | 2475 } |
| 2340 lib.B b;'''); | 2476 lib.B b;'''); |
| 2341 await assertErrors(source2, [StaticWarningCode.NEW_WITH_NON_TYPE]); | 2477 await computeAnalysisResult(source1); |
| 2478 await computeAnalysisResult(source2); |
| 2479 assertErrors(source2, [StaticWarningCode.NEW_WITH_NON_TYPE]); |
| 2342 verify([source1]); | 2480 verify([source1]); |
| 2343 } | 2481 } |
| 2344 | 2482 |
| 2345 test_newWithUndefinedConstructor() async { | 2483 test_newWithUndefinedConstructor() async { |
| 2346 Source source = addSource(r''' | 2484 Source source = addSource(r''' |
| 2347 class A { | 2485 class A { |
| 2348 A() {} | 2486 A() {} |
| 2349 } | 2487 } |
| 2350 f() { | 2488 f() { |
| 2351 new A.name(); | 2489 new A.name(); |
| 2352 }'''); | 2490 }'''); |
| 2353 await assertErrors( | 2491 await computeAnalysisResult(source); |
| 2354 source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR]); | 2492 assertErrors(source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR]); |
| 2355 // no verify(), 'name' is not resolved | 2493 // no verify(), 'name' is not resolved |
| 2356 } | 2494 } |
| 2357 | 2495 |
| 2358 test_newWithUndefinedConstructorDefault() async { | 2496 test_newWithUndefinedConstructorDefault() async { |
| 2359 Source source = addSource(r''' | 2497 Source source = addSource(r''' |
| 2360 class A { | 2498 class A { |
| 2361 A.name() {} | 2499 A.name() {} |
| 2362 } | 2500 } |
| 2363 f() { | 2501 f() { |
| 2364 new A(); | 2502 new A(); |
| 2365 }'''); | 2503 }'''); |
| 2366 await assertErrors( | 2504 await computeAnalysisResult(source); |
| 2505 assertErrors( |
| 2367 source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT]); | 2506 source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT]); |
| 2368 verify([source]); | 2507 verify([source]); |
| 2369 } | 2508 } |
| 2370 | 2509 |
| 2371 test_nonAbstractClassInheritsAbstractMemberFivePlus() async { | 2510 test_nonAbstractClassInheritsAbstractMemberFivePlus() async { |
| 2372 Source source = addSource(r''' | 2511 Source source = addSource(r''' |
| 2373 abstract class A { | 2512 abstract class A { |
| 2374 m(); | 2513 m(); |
| 2375 n(); | 2514 n(); |
| 2376 o(); | 2515 o(); |
| 2377 p(); | 2516 p(); |
| 2378 q(); | 2517 q(); |
| 2379 } | 2518 } |
| 2380 class C extends A { | 2519 class C extends A { |
| 2381 }'''); | 2520 }'''); |
| 2382 await assertErrors(source, [ | 2521 await computeAnalysisResult(source); |
| 2522 assertErrors(source, [ |
| 2383 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS | 2523 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS |
| 2384 ]); | 2524 ]); |
| 2385 verify([source]); | 2525 verify([source]); |
| 2386 } | 2526 } |
| 2387 | 2527 |
| 2388 test_nonAbstractClassInheritsAbstractMemberFour() async { | 2528 test_nonAbstractClassInheritsAbstractMemberFour() async { |
| 2389 Source source = addSource(r''' | 2529 Source source = addSource(r''' |
| 2390 abstract class A { | 2530 abstract class A { |
| 2391 m(); | 2531 m(); |
| 2392 n(); | 2532 n(); |
| 2393 o(); | 2533 o(); |
| 2394 p(); | 2534 p(); |
| 2395 } | 2535 } |
| 2396 class C extends A { | 2536 class C extends A { |
| 2397 }'''); | 2537 }'''); |
| 2398 await assertErrors(source, | 2538 await computeAnalysisResult(source); |
| 2539 assertErrors(source, |
| 2399 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR]); | 2540 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR]); |
| 2400 verify([source]); | 2541 verify([source]); |
| 2401 } | 2542 } |
| 2402 | 2543 |
| 2403 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() asyn
c { | 2544 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() asyn
c { |
| 2404 // 15979 | 2545 // 15979 |
| 2405 Source source = addSource(r''' | 2546 Source source = addSource(r''' |
| 2406 abstract class M {} | 2547 abstract class M {} |
| 2407 abstract class A {} | 2548 abstract class A {} |
| 2408 abstract class I { | 2549 abstract class I { |
| 2409 m(); | 2550 m(); |
| 2410 } | 2551 } |
| 2411 class B = A with M implements I;'''); | 2552 class B = A with M implements I;'''); |
| 2412 await assertErrors(source, | 2553 await computeAnalysisResult(source); |
| 2554 assertErrors(source, |
| 2413 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2555 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2414 verify([source]); | 2556 verify([source]); |
| 2415 } | 2557 } |
| 2416 | 2558 |
| 2417 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() async { | 2559 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() async { |
| 2418 // 15979 | 2560 // 15979 |
| 2419 Source source = addSource(r''' | 2561 Source source = addSource(r''' |
| 2420 abstract class M { | 2562 abstract class M { |
| 2421 m(); | 2563 m(); |
| 2422 } | 2564 } |
| 2423 abstract class A {} | 2565 abstract class A {} |
| 2424 class B = A with M;'''); | 2566 class B = A with M;'''); |
| 2425 await assertErrors(source, | 2567 await computeAnalysisResult(source); |
| 2568 assertErrors(source, |
| 2426 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2569 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2427 verify([source]); | 2570 verify([source]); |
| 2428 } | 2571 } |
| 2429 | 2572 |
| 2430 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() asy
nc { | 2573 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() asy
nc { |
| 2431 // 15979 | 2574 // 15979 |
| 2432 Source source = addSource(r''' | 2575 Source source = addSource(r''' |
| 2433 class M {} | 2576 class M {} |
| 2434 abstract class A { | 2577 abstract class A { |
| 2435 m(); | 2578 m(); |
| 2436 } | 2579 } |
| 2437 class B = A with M;'''); | 2580 class B = A with M;'''); |
| 2438 await assertErrors(source, | 2581 await computeAnalysisResult(source); |
| 2582 assertErrors(source, |
| 2439 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2583 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2440 verify([source]); | 2584 verify([source]); |
| 2441 } | 2585 } |
| 2442 | 2586 |
| 2443 test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsU
sedInImplementation() async { | 2587 test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsU
sedInImplementation() async { |
| 2444 // 15028 | 2588 // 15028 |
| 2445 Source source = addSource(r''' | 2589 Source source = addSource(r''' |
| 2446 class C { | 2590 class C { |
| 2447 foo(int x) => x; | 2591 foo(int x) => x; |
| 2448 } | 2592 } |
| 2449 abstract class D { | 2593 abstract class D { |
| 2450 foo(x, [y]); | 2594 foo(x, [y]); |
| 2451 } | 2595 } |
| 2452 class E extends C implements D {}'''); | 2596 class E extends C implements D {}'''); |
| 2453 await assertErrors(source, | 2597 await computeAnalysisResult(source); |
| 2598 assertErrors(source, |
| 2454 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2599 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2455 verify([source]); | 2600 verify([source]); |
| 2456 } | 2601 } |
| 2457 | 2602 |
| 2458 test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface() async { | 2603 test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface() async { |
| 2459 Source source = addSource(r''' | 2604 Source source = addSource(r''' |
| 2460 class I { | 2605 class I { |
| 2461 int get g {return 1;} | 2606 int get g {return 1;} |
| 2462 } | 2607 } |
| 2463 class C implements I { | 2608 class C implements I { |
| 2464 }'''); | 2609 }'''); |
| 2465 await assertErrors(source, | 2610 await computeAnalysisResult(source); |
| 2611 assertErrors(source, |
| 2466 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2612 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2467 verify([source]); | 2613 verify([source]); |
| 2468 } | 2614 } |
| 2469 | 2615 |
| 2470 test_nonAbstractClassInheritsAbstractMemberOne_getter_fromSuperclass() async { | 2616 test_nonAbstractClassInheritsAbstractMemberOne_getter_fromSuperclass() async { |
| 2471 Source source = addSource(r''' | 2617 Source source = addSource(r''' |
| 2472 abstract class A { | 2618 abstract class A { |
| 2473 int get g; | 2619 int get g; |
| 2474 } | 2620 } |
| 2475 class C extends A { | 2621 class C extends A { |
| 2476 }'''); | 2622 }'''); |
| 2477 await assertErrors(source, | 2623 await computeAnalysisResult(source); |
| 2624 assertErrors(source, |
| 2478 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2625 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2479 verify([source]); | 2626 verify([source]); |
| 2480 } | 2627 } |
| 2481 | 2628 |
| 2482 test_nonAbstractClassInheritsAbstractMemberOne_method_fromInterface() async { | 2629 test_nonAbstractClassInheritsAbstractMemberOne_method_fromInterface() async { |
| 2483 Source source = addSource(r''' | 2630 Source source = addSource(r''' |
| 2484 class I { | 2631 class I { |
| 2485 m(p) {} | 2632 m(p) {} |
| 2486 } | 2633 } |
| 2487 class C implements I { | 2634 class C implements I { |
| 2488 }'''); | 2635 }'''); |
| 2489 await assertErrors(source, | 2636 await computeAnalysisResult(source); |
| 2637 assertErrors(source, |
| 2490 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2638 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2491 verify([source]); | 2639 verify([source]); |
| 2492 } | 2640 } |
| 2493 | 2641 |
| 2494 test_nonAbstractClassInheritsAbstractMemberOne_method_fromSuperclass() async { | 2642 test_nonAbstractClassInheritsAbstractMemberOne_method_fromSuperclass() async { |
| 2495 Source source = addSource(r''' | 2643 Source source = addSource(r''' |
| 2496 abstract class A { | 2644 abstract class A { |
| 2497 m(p); | 2645 m(p); |
| 2498 } | 2646 } |
| 2499 class C extends A { | 2647 class C extends A { |
| 2500 }'''); | 2648 }'''); |
| 2501 await assertErrors(source, | 2649 await computeAnalysisResult(source); |
| 2650 assertErrors(source, |
| 2502 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2651 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2503 verify([source]); | 2652 verify([source]); |
| 2504 } | 2653 } |
| 2505 | 2654 |
| 2506 test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount() asy
nc { | 2655 test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount() asy
nc { |
| 2507 // 7640 | 2656 // 7640 |
| 2508 Source source = addSource(r''' | 2657 Source source = addSource(r''' |
| 2509 abstract class A { | 2658 abstract class A { |
| 2510 int x(int a); | 2659 int x(int a); |
| 2511 } | 2660 } |
| 2512 abstract class B { | 2661 abstract class B { |
| 2513 int x(int a, [int b]); | 2662 int x(int a, [int b]); |
| 2514 } | 2663 } |
| 2515 class C implements A, B { | 2664 class C implements A, B { |
| 2516 }'''); | 2665 }'''); |
| 2517 await assertErrors(source, | 2666 await computeAnalysisResult(source); |
| 2667 assertErrors(source, |
| 2518 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2668 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2519 verify([source]); | 2669 verify([source]); |
| 2520 } | 2670 } |
| 2521 | 2671 |
| 2522 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_getter() async { | 2672 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_getter() async { |
| 2523 // 15001 | 2673 // 15001 |
| 2524 Source source = addSource(r''' | 2674 Source source = addSource(r''' |
| 2525 abstract class A { get g1; get g2; } | 2675 abstract class A { get g1; get g2; } |
| 2526 abstract class B implements A { get g1 => 1; } | 2676 abstract class B implements A { get g1 => 1; } |
| 2527 class C extends Object with B {}'''); | 2677 class C extends Object with B {}'''); |
| 2528 await assertErrors(source, | 2678 await computeAnalysisResult(source); |
| 2679 assertErrors(source, |
| 2529 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2680 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2530 } | 2681 } |
| 2531 | 2682 |
| 2532 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_method() async { | 2683 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_method() async { |
| 2533 // 15001 | 2684 // 15001 |
| 2534 Source source = addSource(r''' | 2685 Source source = addSource(r''' |
| 2535 abstract class A { m1(); m2(); } | 2686 abstract class A { m1(); m2(); } |
| 2536 abstract class B implements A { m1() => 1; } | 2687 abstract class B implements A { m1() => 1; } |
| 2537 class C extends Object with B {}'''); | 2688 class C extends Object with B {}'''); |
| 2538 await assertErrors(source, | 2689 await computeAnalysisResult(source); |
| 2690 assertErrors(source, |
| 2539 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2691 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2540 } | 2692 } |
| 2541 | 2693 |
| 2542 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_setter() async { | 2694 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_setter() async { |
| 2543 // 15001 | 2695 // 15001 |
| 2544 Source source = addSource(r''' | 2696 Source source = addSource(r''' |
| 2545 abstract class A { set s1(v); set s2(v); } | 2697 abstract class A { set s1(v); set s2(v); } |
| 2546 abstract class B implements A { set s1(v) {} } | 2698 abstract class B implements A { set s1(v) {} } |
| 2547 class C extends Object with B {}'''); | 2699 class C extends Object with B {}'''); |
| 2548 await assertErrors(source, | 2700 await computeAnalysisResult(source); |
| 2701 assertErrors(source, |
| 2549 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2702 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2550 } | 2703 } |
| 2551 | 2704 |
| 2552 test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_interface() async
{ | 2705 test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_interface() async
{ |
| 2553 // 15979 | 2706 // 15979 |
| 2554 Source source = addSource(r''' | 2707 Source source = addSource(r''' |
| 2555 class I { | 2708 class I { |
| 2556 noSuchMethod(v) => ''; | 2709 noSuchMethod(v) => ''; |
| 2557 } | 2710 } |
| 2558 abstract class A { | 2711 abstract class A { |
| 2559 m(); | 2712 m(); |
| 2560 } | 2713 } |
| 2561 class B extends A implements I { | 2714 class B extends A implements I { |
| 2562 }'''); | 2715 }'''); |
| 2563 await assertErrors(source, | 2716 await computeAnalysisResult(source); |
| 2717 assertErrors(source, |
| 2564 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2718 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2565 verify([source]); | 2719 verify([source]); |
| 2566 } | 2720 } |
| 2567 | 2721 |
| 2568 test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter() asy
nc { | 2722 test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter() asy
nc { |
| 2569 // test from language/override_inheritance_abstract_test_14.dart | 2723 // test from language/override_inheritance_abstract_test_14.dart |
| 2570 Source source = addSource(r''' | 2724 Source source = addSource(r''' |
| 2571 abstract class A { | 2725 abstract class A { |
| 2572 set field(_); | 2726 set field(_); |
| 2573 } | 2727 } |
| 2574 abstract class I { | 2728 abstract class I { |
| 2575 var field; | 2729 var field; |
| 2576 } | 2730 } |
| 2577 class B extends A implements I { | 2731 class B extends A implements I { |
| 2578 get field => 0; | 2732 get field => 0; |
| 2579 }'''); | 2733 }'''); |
| 2580 await assertErrors(source, | 2734 await computeAnalysisResult(source); |
| 2735 assertErrors(source, |
| 2581 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2736 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2582 verify([source]); | 2737 verify([source]); |
| 2583 } | 2738 } |
| 2584 | 2739 |
| 2585 test_nonAbstractClassInheritsAbstractMemberOne_setter_fromInterface() async { | 2740 test_nonAbstractClassInheritsAbstractMemberOne_setter_fromInterface() async { |
| 2586 Source source = addSource(r''' | 2741 Source source = addSource(r''' |
| 2587 class I { | 2742 class I { |
| 2588 set s(int i) {} | 2743 set s(int i) {} |
| 2589 } | 2744 } |
| 2590 class C implements I { | 2745 class C implements I { |
| 2591 }'''); | 2746 }'''); |
| 2592 await assertErrors(source, | 2747 await computeAnalysisResult(source); |
| 2748 assertErrors(source, |
| 2593 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2749 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2594 verify([source]); | 2750 verify([source]); |
| 2595 } | 2751 } |
| 2596 | 2752 |
| 2597 test_nonAbstractClassInheritsAbstractMemberOne_setter_fromSuperclass() async { | 2753 test_nonAbstractClassInheritsAbstractMemberOne_setter_fromSuperclass() async { |
| 2598 Source source = addSource(r''' | 2754 Source source = addSource(r''' |
| 2599 abstract class A { | 2755 abstract class A { |
| 2600 set s(int i); | 2756 set s(int i); |
| 2601 } | 2757 } |
| 2602 class C extends A { | 2758 class C extends A { |
| 2603 }'''); | 2759 }'''); |
| 2604 await assertErrors(source, | 2760 await computeAnalysisResult(source); |
| 2761 assertErrors(source, |
| 2605 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2762 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2606 verify([source]); | 2763 verify([source]); |
| 2607 } | 2764 } |
| 2608 | 2765 |
| 2609 test_nonAbstractClassInheritsAbstractMemberOne_superclasses_interface() async
{ | 2766 test_nonAbstractClassInheritsAbstractMemberOne_superclasses_interface() async
{ |
| 2610 // bug 11154 | 2767 // bug 11154 |
| 2611 Source source = addSource(r''' | 2768 Source source = addSource(r''' |
| 2612 class A { | 2769 class A { |
| 2613 get a => 'a'; | 2770 get a => 'a'; |
| 2614 } | 2771 } |
| 2615 abstract class B implements A { | 2772 abstract class B implements A { |
| 2616 get b => 'b'; | 2773 get b => 'b'; |
| 2617 } | 2774 } |
| 2618 class C extends B { | 2775 class C extends B { |
| 2619 }'''); | 2776 }'''); |
| 2620 await assertErrors(source, | 2777 await computeAnalysisResult(source); |
| 2778 assertErrors(source, |
| 2621 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2779 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2622 verify([source]); | 2780 verify([source]); |
| 2623 } | 2781 } |
| 2624 | 2782 |
| 2625 test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingG
etter() async { | 2783 test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingG
etter() async { |
| 2626 // 16133 | 2784 // 16133 |
| 2627 Source source = addSource(r''' | 2785 Source source = addSource(r''' |
| 2628 class I { | 2786 class I { |
| 2629 var v; | 2787 var v; |
| 2630 } | 2788 } |
| 2631 class C implements I { | 2789 class C implements I { |
| 2632 set v(_) {} | 2790 set v(_) {} |
| 2633 }'''); | 2791 }'''); |
| 2634 await assertErrors(source, | 2792 await computeAnalysisResult(source); |
| 2793 assertErrors(source, |
| 2635 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2794 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2636 verify([source]); | 2795 verify([source]); |
| 2637 } | 2796 } |
| 2638 | 2797 |
| 2639 test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingS
etter() async { | 2798 test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingS
etter() async { |
| 2640 // 16133 | 2799 // 16133 |
| 2641 Source source = addSource(r''' | 2800 Source source = addSource(r''' |
| 2642 class I { | 2801 class I { |
| 2643 var v; | 2802 var v; |
| 2644 } | 2803 } |
| 2645 class C implements I { | 2804 class C implements I { |
| 2646 get v => 1; | 2805 get v => 1; |
| 2647 }'''); | 2806 }'''); |
| 2648 await assertErrors(source, | 2807 await computeAnalysisResult(source); |
| 2808 assertErrors(source, |
| 2649 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); | 2809 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2650 verify([source]); | 2810 verify([source]); |
| 2651 } | 2811 } |
| 2652 | 2812 |
| 2653 test_nonAbstractClassInheritsAbstractMemberThree() async { | 2813 test_nonAbstractClassInheritsAbstractMemberThree() async { |
| 2654 Source source = addSource(r''' | 2814 Source source = addSource(r''' |
| 2655 abstract class A { | 2815 abstract class A { |
| 2656 m(); | 2816 m(); |
| 2657 n(); | 2817 n(); |
| 2658 o(); | 2818 o(); |
| 2659 } | 2819 } |
| 2660 class C extends A { | 2820 class C extends A { |
| 2661 }'''); | 2821 }'''); |
| 2662 await assertErrors(source, | 2822 await computeAnalysisResult(source); |
| 2823 assertErrors(source, |
| 2663 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE]); | 2824 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE]); |
| 2664 verify([source]); | 2825 verify([source]); |
| 2665 } | 2826 } |
| 2666 | 2827 |
| 2667 test_nonAbstractClassInheritsAbstractMemberTwo() async { | 2828 test_nonAbstractClassInheritsAbstractMemberTwo() async { |
| 2668 Source source = addSource(r''' | 2829 Source source = addSource(r''' |
| 2669 abstract class A { | 2830 abstract class A { |
| 2670 m(); | 2831 m(); |
| 2671 n(); | 2832 n(); |
| 2672 } | 2833 } |
| 2673 class C extends A { | 2834 class C extends A { |
| 2674 }'''); | 2835 }'''); |
| 2675 await assertErrors(source, | 2836 await computeAnalysisResult(source); |
| 2837 assertErrors(source, |
| 2676 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]); | 2838 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]); |
| 2677 verify([source]); | 2839 verify([source]); |
| 2678 } | 2840 } |
| 2679 | 2841 |
| 2680 test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_missingB
oth() async { | 2842 test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_missingB
oth() async { |
| 2681 // 16133 | 2843 // 16133 |
| 2682 Source source = addSource(r''' | 2844 Source source = addSource(r''' |
| 2683 class I { | 2845 class I { |
| 2684 var v; | 2846 var v; |
| 2685 } | 2847 } |
| 2686 class C implements I { | 2848 class C implements I { |
| 2687 }'''); | 2849 }'''); |
| 2688 await assertErrors(source, | 2850 await computeAnalysisResult(source); |
| 2851 assertErrors(source, |
| 2689 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]); | 2852 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]); |
| 2690 verify([source]); | 2853 verify([source]); |
| 2691 } | 2854 } |
| 2692 | 2855 |
| 2693 test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromMixin_missingBoth(
) async { | 2856 test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromMixin_missingBoth(
) async { |
| 2694 // 26411 | 2857 // 26411 |
| 2695 resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); | 2858 resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); |
| 2696 Source source = addSource(r''' | 2859 Source source = addSource(r''' |
| 2697 class A { | 2860 class A { |
| 2698 int f; | 2861 int f; |
| 2699 } | 2862 } |
| 2700 class B extends A {} | 2863 class B extends A {} |
| 2701 class C extends Object with B {} | 2864 class C extends Object with B {} |
| 2702 '''); | 2865 '''); |
| 2703 await assertErrors(source, | 2866 await computeAnalysisResult(source); |
| 2867 assertErrors(source, |
| 2704 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]); | 2868 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]); |
| 2705 verify([source]); | 2869 verify([source]); |
| 2706 } | 2870 } |
| 2707 | 2871 |
| 2708 test_nonTypeInCatchClause_noElement() async { | 2872 test_nonTypeInCatchClause_noElement() async { |
| 2709 Source source = addSource(r''' | 2873 Source source = addSource(r''' |
| 2710 f() { | 2874 f() { |
| 2711 try { | 2875 try { |
| 2712 } on T catch (e) { | 2876 } on T catch (e) { |
| 2713 } | 2877 } |
| 2714 }'''); | 2878 }'''); |
| 2715 await assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]); | 2879 await computeAnalysisResult(source); |
| 2880 assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]); |
| 2716 verify([source]); | 2881 verify([source]); |
| 2717 } | 2882 } |
| 2718 | 2883 |
| 2719 test_nonTypeInCatchClause_notType() async { | 2884 test_nonTypeInCatchClause_notType() async { |
| 2720 Source source = addSource(r''' | 2885 Source source = addSource(r''' |
| 2721 var T = 0; | 2886 var T = 0; |
| 2722 f() { | 2887 f() { |
| 2723 try { | 2888 try { |
| 2724 } on T catch (e) { | 2889 } on T catch (e) { |
| 2725 } | 2890 } |
| 2726 }'''); | 2891 }'''); |
| 2727 await assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]); | 2892 await computeAnalysisResult(source); |
| 2893 assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]); |
| 2728 verify([source]); | 2894 verify([source]); |
| 2729 } | 2895 } |
| 2730 | 2896 |
| 2731 test_nonVoidReturnForOperator() async { | 2897 test_nonVoidReturnForOperator() async { |
| 2732 Source source = addSource(r''' | 2898 Source source = addSource(r''' |
| 2733 class A { | 2899 class A { |
| 2734 int operator []=(a, b) { return a; } | 2900 int operator []=(a, b) { return a; } |
| 2735 }'''); | 2901 }'''); |
| 2736 await assertErrors( | 2902 await computeAnalysisResult(source); |
| 2737 source, [StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR]); | 2903 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR]); |
| 2738 verify([source]); | 2904 verify([source]); |
| 2739 } | 2905 } |
| 2740 | 2906 |
| 2741 test_nonVoidReturnForSetter_function() async { | 2907 test_nonVoidReturnForSetter_function() async { |
| 2742 Source source = addSource(r''' | 2908 Source source = addSource(r''' |
| 2743 int set x(int v) { | 2909 int set x(int v) { |
| 2744 return 42; | 2910 return 42; |
| 2745 }'''); | 2911 }'''); |
| 2746 await assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]); | 2912 await computeAnalysisResult(source); |
| 2913 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]); |
| 2747 verify([source]); | 2914 verify([source]); |
| 2748 } | 2915 } |
| 2749 | 2916 |
| 2750 test_nonVoidReturnForSetter_method() async { | 2917 test_nonVoidReturnForSetter_method() async { |
| 2751 Source source = addSource(r''' | 2918 Source source = addSource(r''' |
| 2752 class A { | 2919 class A { |
| 2753 int set x(int v) { | 2920 int set x(int v) { |
| 2754 return 42; | 2921 return 42; |
| 2755 } | 2922 } |
| 2756 }'''); | 2923 }'''); |
| 2757 await assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]); | 2924 await computeAnalysisResult(source); |
| 2925 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]); |
| 2758 verify([source]); | 2926 verify([source]); |
| 2759 } | 2927 } |
| 2760 | 2928 |
| 2761 test_notAType() async { | 2929 test_notAType() async { |
| 2762 Source source = addSource(r''' | 2930 Source source = addSource(r''' |
| 2763 f() {} | 2931 f() {} |
| 2764 main() { | 2932 main() { |
| 2765 f v = null; | 2933 f v = null; |
| 2766 }'''); | 2934 }'''); |
| 2767 await assertErrors(source, [StaticWarningCode.NOT_A_TYPE]); | 2935 await computeAnalysisResult(source); |
| 2936 assertErrors(source, [StaticWarningCode.NOT_A_TYPE]); |
| 2768 verify([source]); | 2937 verify([source]); |
| 2769 } | 2938 } |
| 2770 | 2939 |
| 2771 test_notEnoughRequiredArguments() async { | 2940 test_notEnoughRequiredArguments() async { |
| 2772 Source source = addSource(r''' | 2941 Source source = addSource(r''' |
| 2773 f(int a, String b) {} | 2942 f(int a, String b) {} |
| 2774 main() { | 2943 main() { |
| 2775 f(); | 2944 f(); |
| 2776 }'''); | 2945 }'''); |
| 2777 await assertErrors( | 2946 await computeAnalysisResult(source); |
| 2778 source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); | 2947 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); |
| 2779 verify([source]); | 2948 verify([source]); |
| 2780 } | 2949 } |
| 2781 | 2950 |
| 2782 test_notEnoughRequiredArguments_functionExpression() async { | 2951 test_notEnoughRequiredArguments_functionExpression() async { |
| 2783 Source source = addSource(r''' | 2952 Source source = addSource(r''' |
| 2784 main() { | 2953 main() { |
| 2785 (int x) {} (); | 2954 (int x) {} (); |
| 2786 }'''); | 2955 }'''); |
| 2787 await assertErrors( | 2956 await computeAnalysisResult(source); |
| 2788 source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); | 2957 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); |
| 2789 verify([source]); | 2958 verify([source]); |
| 2790 } | 2959 } |
| 2791 | 2960 |
| 2792 test_notEnoughRequiredArguments_getterReturningFunction() async { | 2961 test_notEnoughRequiredArguments_getterReturningFunction() async { |
| 2793 Source source = addSource(r''' | 2962 Source source = addSource(r''' |
| 2794 typedef Getter(self); | 2963 typedef Getter(self); |
| 2795 Getter getter = (x) => x; | 2964 Getter getter = (x) => x; |
| 2796 main() { | 2965 main() { |
| 2797 getter(); | 2966 getter(); |
| 2798 }'''); | 2967 }'''); |
| 2799 await assertErrors( | 2968 await computeAnalysisResult(source); |
| 2800 source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); | 2969 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); |
| 2801 verify([source]); | 2970 verify([source]); |
| 2802 } | 2971 } |
| 2803 | 2972 |
| 2804 test_partOfDifferentLibrary() async { | 2973 test_partOfDifferentLibrary() async { |
| 2805 Source source = addSource(r''' | 2974 Source source = addSource(r''' |
| 2806 library lib; | 2975 library lib; |
| 2807 part 'part.dart';'''); | 2976 part 'part.dart';'''); |
| 2808 addNamedSource("/part.dart", "part of lub;"); | 2977 addNamedSource("/part.dart", "part of lub;"); |
| 2809 await assertErrors(source, [StaticWarningCode.PART_OF_DIFFERENT_LIBRARY]); | 2978 await computeAnalysisResult(source); |
| 2979 assertErrors(source, [StaticWarningCode.PART_OF_DIFFERENT_LIBRARY]); |
| 2810 verify([source]); | 2980 verify([source]); |
| 2811 } | 2981 } |
| 2812 | 2982 |
| 2813 test_redirectToInvalidFunctionType() async { | 2983 test_redirectToInvalidFunctionType() async { |
| 2814 Source source = addSource(r''' | 2984 Source source = addSource(r''' |
| 2815 class A implements B { | 2985 class A implements B { |
| 2816 A(int p) {} | 2986 A(int p) {} |
| 2817 } | 2987 } |
| 2818 class B { | 2988 class B { |
| 2819 factory B() = A; | 2989 factory B() = A; |
| 2820 }'''); | 2990 }'''); |
| 2821 await assertErrors( | 2991 await computeAnalysisResult(source); |
| 2822 source, [StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE]); | 2992 assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE]); |
| 2823 verify([source]); | 2993 verify([source]); |
| 2824 } | 2994 } |
| 2825 | 2995 |
| 2826 test_redirectToInvalidReturnType() async { | 2996 test_redirectToInvalidReturnType() async { |
| 2827 Source source = addSource(r''' | 2997 Source source = addSource(r''' |
| 2828 class A { | 2998 class A { |
| 2829 A() {} | 2999 A() {} |
| 2830 } | 3000 } |
| 2831 class B { | 3001 class B { |
| 2832 factory B() = A; | 3002 factory B() = A; |
| 2833 }'''); | 3003 }'''); |
| 2834 await assertErrors( | 3004 await computeAnalysisResult(source); |
| 2835 source, [StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE]); | 3005 assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE]); |
| 2836 verify([source]); | 3006 verify([source]); |
| 2837 } | 3007 } |
| 2838 | 3008 |
| 2839 test_redirectToMissingConstructor_named() async { | 3009 test_redirectToMissingConstructor_named() async { |
| 2840 Source source = addSource(r''' | 3010 Source source = addSource(r''' |
| 2841 class A implements B{ | 3011 class A implements B{ |
| 2842 A() {} | 3012 A() {} |
| 2843 } | 3013 } |
| 2844 class B { | 3014 class B { |
| 2845 factory B() = A.name; | 3015 factory B() = A.name; |
| 2846 }'''); | 3016 }'''); |
| 2847 await assertErrors( | 3017 await computeAnalysisResult(source); |
| 2848 source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]); | 3018 assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]); |
| 2849 } | 3019 } |
| 2850 | 3020 |
| 2851 test_redirectToMissingConstructor_unnamed() async { | 3021 test_redirectToMissingConstructor_unnamed() async { |
| 2852 Source source = addSource(r''' | 3022 Source source = addSource(r''' |
| 2853 class A implements B{ | 3023 class A implements B{ |
| 2854 A.name() {} | 3024 A.name() {} |
| 2855 } | 3025 } |
| 2856 class B { | 3026 class B { |
| 2857 factory B() = A; | 3027 factory B() = A; |
| 2858 }'''); | 3028 }'''); |
| 2859 await assertErrors( | 3029 await computeAnalysisResult(source); |
| 2860 source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]); | 3030 assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]); |
| 2861 } | 3031 } |
| 2862 | 3032 |
| 2863 test_redirectToNonClass_notAType() async { | 3033 test_redirectToNonClass_notAType() async { |
| 2864 Source source = addSource(r''' | 3034 Source source = addSource(r''' |
| 2865 class B { | 3035 class B { |
| 2866 int A; | 3036 int A; |
| 2867 factory B() = A; | 3037 factory B() = A; |
| 2868 }'''); | 3038 }'''); |
| 2869 await assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]); | 3039 await computeAnalysisResult(source); |
| 3040 assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]); |
| 2870 verify([source]); | 3041 verify([source]); |
| 2871 } | 3042 } |
| 2872 | 3043 |
| 2873 test_redirectToNonClass_undefinedIdentifier() async { | 3044 test_redirectToNonClass_undefinedIdentifier() async { |
| 2874 Source source = addSource(r''' | 3045 Source source = addSource(r''' |
| 2875 class B { | 3046 class B { |
| 2876 factory B() = A; | 3047 factory B() = A; |
| 2877 }'''); | 3048 }'''); |
| 2878 await assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]); | 3049 await computeAnalysisResult(source); |
| 3050 assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]); |
| 2879 verify([source]); | 3051 verify([source]); |
| 2880 } | 3052 } |
| 2881 | 3053 |
| 2882 test_returnWithoutValue_async() async { | 3054 test_returnWithoutValue_async() async { |
| 2883 Source source = addSource(''' | 3055 Source source = addSource(''' |
| 2884 import 'dart:async'; | 3056 import 'dart:async'; |
| 2885 Future<int> f() async { | 3057 Future<int> f() async { |
| 2886 return; | 3058 return; |
| 2887 } | 3059 } |
| 2888 '''); | 3060 '''); |
| 2889 await assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); | 3061 await computeAnalysisResult(source); |
| 3062 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); |
| 2890 verify([source]); | 3063 verify([source]); |
| 2891 } | 3064 } |
| 2892 | 3065 |
| 2893 test_returnWithoutValue_factoryConstructor() async { | 3066 test_returnWithoutValue_factoryConstructor() async { |
| 2894 Source source = addSource("class A { factory A() { return; } }"); | 3067 Source source = addSource("class A { factory A() { return; } }"); |
| 2895 await assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); | 3068 await computeAnalysisResult(source); |
| 3069 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); |
| 2896 verify([source]); | 3070 verify([source]); |
| 2897 } | 3071 } |
| 2898 | 3072 |
| 2899 test_returnWithoutValue_function() async { | 3073 test_returnWithoutValue_function() async { |
| 2900 Source source = addSource("int f() { return; }"); | 3074 Source source = addSource("int f() { return; }"); |
| 2901 await assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); | 3075 await computeAnalysisResult(source); |
| 3076 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); |
| 2902 verify([source]); | 3077 verify([source]); |
| 2903 } | 3078 } |
| 2904 | 3079 |
| 2905 test_returnWithoutValue_method() async { | 3080 test_returnWithoutValue_method() async { |
| 2906 Source source = addSource("class A { int m() { return; } }"); | 3081 Source source = addSource("class A { int m() { return; } }"); |
| 2907 await assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); | 3082 await computeAnalysisResult(source); |
| 3083 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); |
| 2908 verify([source]); | 3084 verify([source]); |
| 2909 } | 3085 } |
| 2910 | 3086 |
| 2911 test_returnWithoutValue_mixedReturnTypes_function() async { | 3087 test_returnWithoutValue_mixedReturnTypes_function() async { |
| 2912 // Tests that only the RETURN_WITHOUT_VALUE warning is created, and no | 3088 // Tests that only the RETURN_WITHOUT_VALUE warning is created, and no |
| 2913 // MIXED_RETURN_TYPES are created. | 3089 // MIXED_RETURN_TYPES are created. |
| 2914 Source source = addSource(r''' | 3090 Source source = addSource(r''' |
| 2915 int f(int x) { | 3091 int f(int x) { |
| 2916 if (x < 0) { | 3092 if (x < 0) { |
| 2917 return 1; | 3093 return 1; |
| 2918 } | 3094 } |
| 2919 return; | 3095 return; |
| 2920 }'''); | 3096 }'''); |
| 2921 await assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); | 3097 await computeAnalysisResult(source); |
| 3098 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); |
| 2922 verify([source]); | 3099 verify([source]); |
| 2923 } | 3100 } |
| 2924 | 3101 |
| 2925 test_staticAccessToInstanceMember_method_invocation() async { | 3102 test_staticAccessToInstanceMember_method_invocation() async { |
| 2926 Source source = addSource(r''' | 3103 Source source = addSource(r''' |
| 2927 class A { | 3104 class A { |
| 2928 m() {} | 3105 m() {} |
| 2929 } | 3106 } |
| 2930 main() { | 3107 main() { |
| 2931 A.m(); | 3108 A.m(); |
| 2932 }'''); | 3109 }'''); |
| 2933 await assertErrors( | 3110 await computeAnalysisResult(source); |
| 2934 source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); | 3111 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); |
| 2935 verify([source]); | 3112 verify([source]); |
| 2936 } | 3113 } |
| 2937 | 3114 |
| 2938 test_staticAccessToInstanceMember_method_reference() async { | 3115 test_staticAccessToInstanceMember_method_reference() async { |
| 2939 Source source = addSource(r''' | 3116 Source source = addSource(r''' |
| 2940 class A { | 3117 class A { |
| 2941 m() {} | 3118 m() {} |
| 2942 } | 3119 } |
| 2943 main() { | 3120 main() { |
| 2944 A.m; | 3121 A.m; |
| 2945 }'''); | 3122 }'''); |
| 2946 await assertErrors( | 3123 await computeAnalysisResult(source); |
| 2947 source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); | 3124 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); |
| 2948 verify([source]); | 3125 verify([source]); |
| 2949 } | 3126 } |
| 2950 | 3127 |
| 2951 test_staticAccessToInstanceMember_propertyAccess_field() async { | 3128 test_staticAccessToInstanceMember_propertyAccess_field() async { |
| 2952 Source source = addSource(r''' | 3129 Source source = addSource(r''' |
| 2953 class A { | 3130 class A { |
| 2954 var f; | 3131 var f; |
| 2955 } | 3132 } |
| 2956 main() { | 3133 main() { |
| 2957 A.f; | 3134 A.f; |
| 2958 }'''); | 3135 }'''); |
| 2959 await assertErrors( | 3136 await computeAnalysisResult(source); |
| 2960 source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); | 3137 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); |
| 2961 verify([source]); | 3138 verify([source]); |
| 2962 } | 3139 } |
| 2963 | 3140 |
| 2964 test_staticAccessToInstanceMember_propertyAccess_getter() async { | 3141 test_staticAccessToInstanceMember_propertyAccess_getter() async { |
| 2965 Source source = addSource(r''' | 3142 Source source = addSource(r''' |
| 2966 class A { | 3143 class A { |
| 2967 get f => 42; | 3144 get f => 42; |
| 2968 } | 3145 } |
| 2969 main() { | 3146 main() { |
| 2970 A.f; | 3147 A.f; |
| 2971 }'''); | 3148 }'''); |
| 2972 await assertErrors( | 3149 await computeAnalysisResult(source); |
| 2973 source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); | 3150 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); |
| 2974 verify([source]); | 3151 verify([source]); |
| 2975 } | 3152 } |
| 2976 | 3153 |
| 2977 test_staticAccessToInstanceMember_propertyAccess_setter() async { | 3154 test_staticAccessToInstanceMember_propertyAccess_setter() async { |
| 2978 Source source = addSource(r''' | 3155 Source source = addSource(r''' |
| 2979 class A { | 3156 class A { |
| 2980 set f(x) {} | 3157 set f(x) {} |
| 2981 } | 3158 } |
| 2982 main() { | 3159 main() { |
| 2983 A.f = 42; | 3160 A.f = 42; |
| 2984 }'''); | 3161 }'''); |
| 2985 await assertErrors( | 3162 await computeAnalysisResult(source); |
| 2986 source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); | 3163 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); |
| 2987 verify([source]); | 3164 verify([source]); |
| 2988 } | 3165 } |
| 2989 | 3166 |
| 2990 test_switchExpressionNotAssignable() async { | 3167 test_switchExpressionNotAssignable() async { |
| 2991 Source source = addSource(r''' | 3168 Source source = addSource(r''' |
| 2992 f(int p) { | 3169 f(int p) { |
| 2993 switch (p) { | 3170 switch (p) { |
| 2994 case 'a': break; | 3171 case 'a': break; |
| 2995 } | 3172 } |
| 2996 }'''); | 3173 }'''); |
| 2997 await assertErrors( | 3174 await computeAnalysisResult(source); |
| 2998 source, [StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE]); | 3175 assertErrors(source, [StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE]); |
| 2999 verify([source]); | 3176 verify([source]); |
| 3000 } | 3177 } |
| 3001 | 3178 |
| 3002 test_typeAnnotationDeferredClass_asExpression() async { | 3179 test_typeAnnotationDeferredClass_asExpression() async { |
| 3003 await resolveWithErrors(<String>[ | 3180 await resolveWithErrors(<String>[ |
| 3004 r''' | 3181 r''' |
| 3005 library lib1; | 3182 library lib1; |
| 3006 class A {}''', | 3183 class A {}''', |
| 3007 r''' | 3184 r''' |
| 3008 library root; | 3185 library root; |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3185 | 3362 |
| 3186 test_typeAnnotationGenericFunctionParameter_localFunction() async { | 3363 test_typeAnnotationGenericFunctionParameter_localFunction() async { |
| 3187 Source source = addSource(r''' | 3364 Source source = addSource(r''' |
| 3188 class A { | 3365 class A { |
| 3189 void method() { | 3366 void method() { |
| 3190 T local<T>(Object t) { | 3367 T local<T>(Object t) { |
| 3191 return (t is T) ? t : null; | 3368 return (t is T) ? t : null; |
| 3192 } | 3369 } |
| 3193 } | 3370 } |
| 3194 }'''); | 3371 }'''); |
| 3195 await assertErrors( | 3372 await computeAnalysisResult(source); |
| 3373 assertErrors( |
| 3196 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]); | 3374 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]); |
| 3197 verify([source]); | 3375 verify([source]); |
| 3198 } | 3376 } |
| 3199 | 3377 |
| 3200 test_typeAnnotationGenericFunctionParameter_method() async { | 3378 test_typeAnnotationGenericFunctionParameter_method() async { |
| 3201 Source source = addSource(r''' | 3379 Source source = addSource(r''' |
| 3202 class A { | 3380 class A { |
| 3203 T method<T>(Object t) { | 3381 T method<T>(Object t) { |
| 3204 return (t is T) ? t : null; | 3382 return (t is T) ? t : null; |
| 3205 } | 3383 } |
| 3206 }'''); | 3384 }'''); |
| 3207 await assertErrors( | 3385 await computeAnalysisResult(source); |
| 3386 assertErrors( |
| 3208 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]); | 3387 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]); |
| 3209 verify([source]); | 3388 verify([source]); |
| 3210 } | 3389 } |
| 3211 | 3390 |
| 3212 test_typeAnnotationGenericFunctionParameter_topLevelFunction() async { | 3391 test_typeAnnotationGenericFunctionParameter_topLevelFunction() async { |
| 3213 Source source = addSource(r''' | 3392 Source source = addSource(r''' |
| 3214 T function<T>(Object t) { | 3393 T function<T>(Object t) { |
| 3215 return (t is T) ? t : null; | 3394 return (t is T) ? t : null; |
| 3216 }'''); | 3395 }'''); |
| 3217 await assertErrors( | 3396 await computeAnalysisResult(source); |
| 3397 assertErrors( |
| 3218 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]); | 3398 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]); |
| 3219 verify([source]); | 3399 verify([source]); |
| 3220 } | 3400 } |
| 3221 | 3401 |
| 3222 test_typeParameterReferencedByStatic_field() async { | 3402 test_typeParameterReferencedByStatic_field() async { |
| 3223 Source source = addSource(r''' | 3403 Source source = addSource(r''' |
| 3224 class A<K> { | 3404 class A<K> { |
| 3225 static K k; | 3405 static K k; |
| 3226 }'''); | 3406 }'''); |
| 3227 await assertErrors( | 3407 await computeAnalysisResult(source); |
| 3408 assertErrors( |
| 3228 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); | 3409 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); |
| 3229 verify([source]); | 3410 verify([source]); |
| 3230 } | 3411 } |
| 3231 | 3412 |
| 3232 test_typeParameterReferencedByStatic_getter() async { | 3413 test_typeParameterReferencedByStatic_getter() async { |
| 3233 Source source = addSource(r''' | 3414 Source source = addSource(r''' |
| 3234 class A<K> { | 3415 class A<K> { |
| 3235 static K get k => null; | 3416 static K get k => null; |
| 3236 }'''); | 3417 }'''); |
| 3237 await assertErrors( | 3418 await computeAnalysisResult(source); |
| 3419 assertErrors( |
| 3238 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); | 3420 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); |
| 3239 verify([source]); | 3421 verify([source]); |
| 3240 } | 3422 } |
| 3241 | 3423 |
| 3242 test_typeParameterReferencedByStatic_methodBodyReference() async { | 3424 test_typeParameterReferencedByStatic_methodBodyReference() async { |
| 3243 Source source = addSource(r''' | 3425 Source source = addSource(r''' |
| 3244 class A<K> { | 3426 class A<K> { |
| 3245 static m() { | 3427 static m() { |
| 3246 K k; | 3428 K k; |
| 3247 } | 3429 } |
| 3248 }'''); | 3430 }'''); |
| 3249 await assertErrors( | 3431 await computeAnalysisResult(source); |
| 3432 assertErrors( |
| 3250 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); | 3433 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); |
| 3251 verify([source]); | 3434 verify([source]); |
| 3252 } | 3435 } |
| 3253 | 3436 |
| 3254 test_typeParameterReferencedByStatic_methodParameter() async { | 3437 test_typeParameterReferencedByStatic_methodParameter() async { |
| 3255 Source source = addSource(r''' | 3438 Source source = addSource(r''' |
| 3256 class A<K> { | 3439 class A<K> { |
| 3257 static m(K k) {} | 3440 static m(K k) {} |
| 3258 }'''); | 3441 }'''); |
| 3259 await assertErrors( | 3442 await computeAnalysisResult(source); |
| 3443 assertErrors( |
| 3260 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); | 3444 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); |
| 3261 verify([source]); | 3445 verify([source]); |
| 3262 } | 3446 } |
| 3263 | 3447 |
| 3264 test_typeParameterReferencedByStatic_methodReturn() async { | 3448 test_typeParameterReferencedByStatic_methodReturn() async { |
| 3265 Source source = addSource(r''' | 3449 Source source = addSource(r''' |
| 3266 class A<K> { | 3450 class A<K> { |
| 3267 static K m() { return null; } | 3451 static K m() { return null; } |
| 3268 }'''); | 3452 }'''); |
| 3269 await assertErrors( | 3453 await computeAnalysisResult(source); |
| 3454 assertErrors( |
| 3270 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); | 3455 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); |
| 3271 verify([source]); | 3456 verify([source]); |
| 3272 } | 3457 } |
| 3273 | 3458 |
| 3274 test_typeParameterReferencedByStatic_setter() async { | 3459 test_typeParameterReferencedByStatic_setter() async { |
| 3275 Source source = addSource(r''' | 3460 Source source = addSource(r''' |
| 3276 class A<K> { | 3461 class A<K> { |
| 3277 static set s(K k) {} | 3462 static set s(K k) {} |
| 3278 }'''); | 3463 }'''); |
| 3279 await assertErrors( | 3464 await computeAnalysisResult(source); |
| 3465 assertErrors( |
| 3280 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); | 3466 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); |
| 3281 verify([source]); | 3467 verify([source]); |
| 3282 } | 3468 } |
| 3283 | 3469 |
| 3284 test_typePromotion_functionType_arg_InterToDyn() async { | 3470 test_typePromotion_functionType_arg_InterToDyn() async { |
| 3285 Source source = addSource(r''' | 3471 Source source = addSource(r''' |
| 3286 typedef FuncDyn(x); | 3472 typedef FuncDyn(x); |
| 3287 typedef FuncA(A a); | 3473 typedef FuncA(A a); |
| 3288 class A {} | 3474 class A {} |
| 3289 class B {} | 3475 class B {} |
| 3290 main(FuncA f) { | 3476 main(FuncA f) { |
| 3291 if (f is FuncDyn) { | 3477 if (f is FuncDyn) { |
| 3292 f(new B()); | 3478 f(new B()); |
| 3293 } | 3479 } |
| 3294 }'''); | 3480 }'''); |
| 3295 await assertErrors( | 3481 await computeAnalysisResult(source); |
| 3296 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | 3482 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); |
| 3297 } | 3483 } |
| 3298 | 3484 |
| 3299 test_typeTestNonType() async { | 3485 test_typeTestNonType() async { |
| 3300 Source source = addSource(r''' | 3486 Source source = addSource(r''' |
| 3301 var A = 0; | 3487 var A = 0; |
| 3302 f(var p) { | 3488 f(var p) { |
| 3303 if (p is A) { | 3489 if (p is A) { |
| 3304 } | 3490 } |
| 3305 }'''); | 3491 }'''); |
| 3306 await assertErrors(source, [StaticWarningCode.TYPE_TEST_WITH_NON_TYPE]); | 3492 await computeAnalysisResult(source); |
| 3493 assertErrors(source, [StaticWarningCode.TYPE_TEST_WITH_NON_TYPE]); |
| 3307 verify([source]); | 3494 verify([source]); |
| 3308 } | 3495 } |
| 3309 | 3496 |
| 3310 test_typeTestWithUndefinedName() async { | 3497 test_typeTestWithUndefinedName() async { |
| 3311 Source source = addSource(r''' | 3498 Source source = addSource(r''' |
| 3312 f(var p) { | 3499 f(var p) { |
| 3313 if (p is A) { | 3500 if (p is A) { |
| 3314 } | 3501 } |
| 3315 }'''); | 3502 }'''); |
| 3316 await assertErrors( | 3503 await computeAnalysisResult(source); |
| 3317 source, [StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME]); | 3504 assertErrors(source, [StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME]); |
| 3318 verify([source]); | 3505 verify([source]); |
| 3319 } | 3506 } |
| 3320 | 3507 |
| 3321 test_undefinedClass_instanceCreation() async { | 3508 test_undefinedClass_instanceCreation() async { |
| 3322 Source source = addSource("f() { new C(); }"); | 3509 Source source = addSource("f() { new C(); }"); |
| 3323 await assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); | 3510 await computeAnalysisResult(source); |
| 3511 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); |
| 3324 } | 3512 } |
| 3325 | 3513 |
| 3326 test_undefinedClass_variableDeclaration() async { | 3514 test_undefinedClass_variableDeclaration() async { |
| 3327 Source source = addSource("f() { C c; }"); | 3515 Source source = addSource("f() { C c; }"); |
| 3328 await assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); | 3516 await computeAnalysisResult(source); |
| 3517 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); |
| 3329 } | 3518 } |
| 3330 | 3519 |
| 3331 test_undefinedClassBoolean_variableDeclaration() async { | 3520 test_undefinedClassBoolean_variableDeclaration() async { |
| 3332 Source source = addSource("f() { boolean v; }"); | 3521 Source source = addSource("f() { boolean v; }"); |
| 3333 await assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS_BOOLEAN]); | 3522 await computeAnalysisResult(source); |
| 3523 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS_BOOLEAN]); |
| 3334 } | 3524 } |
| 3335 | 3525 |
| 3336 test_undefinedGetter_fromLibrary() async { | 3526 test_undefinedGetter_fromLibrary() async { |
| 3337 Source source1 = addNamedSource("/lib.dart", ""); | 3527 Source source1 = addNamedSource("/lib.dart", ""); |
| 3338 Source source2 = addNamedSource( | 3528 Source source2 = addNamedSource( |
| 3339 "/lib2.dart", | 3529 "/lib2.dart", |
| 3340 r''' | 3530 r''' |
| 3341 import 'lib.dart' as lib; | 3531 import 'lib.dart' as lib; |
| 3342 void f() { | 3532 void f() { |
| 3343 var g = lib.gg; | 3533 var g = lib.gg; |
| 3344 }'''); | 3534 }'''); |
| 3345 await assertErrors(source2, [StaticWarningCode.UNDEFINED_GETTER]); | 3535 await computeAnalysisResult(source1); |
| 3536 await computeAnalysisResult(source2); |
| 3537 assertErrors(source2, [StaticWarningCode.UNDEFINED_GETTER]); |
| 3346 verify([source1]); | 3538 verify([source1]); |
| 3347 } | 3539 } |
| 3348 | 3540 |
| 3349 test_undefinedIdentifier_for() async { | 3541 test_undefinedIdentifier_for() async { |
| 3350 Source source = addSource(r''' | 3542 Source source = addSource(r''' |
| 3351 f(var l) { | 3543 f(var l) { |
| 3352 for (e in l) { | 3544 for (e in l) { |
| 3353 } | 3545 } |
| 3354 }'''); | 3546 }'''); |
| 3355 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | 3547 await computeAnalysisResult(source); |
| 3548 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); |
| 3356 } | 3549 } |
| 3357 | 3550 |
| 3358 test_undefinedIdentifier_function() async { | 3551 test_undefinedIdentifier_function() async { |
| 3359 Source source = addSource("int a() => b;"); | 3552 Source source = addSource("int a() => b;"); |
| 3360 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | 3553 await computeAnalysisResult(source); |
| 3554 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); |
| 3361 } | 3555 } |
| 3362 | 3556 |
| 3363 test_undefinedIdentifier_importCore_withShow() async { | 3557 test_undefinedIdentifier_importCore_withShow() async { |
| 3364 Source source = addSource(r''' | 3558 Source source = addSource(r''' |
| 3365 import 'dart:core' show List; | 3559 import 'dart:core' show List; |
| 3366 main() { | 3560 main() { |
| 3367 List; | 3561 List; |
| 3368 String; | 3562 String; |
| 3369 }'''); | 3563 }'''); |
| 3370 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | 3564 await computeAnalysisResult(source); |
| 3565 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); |
| 3371 } | 3566 } |
| 3372 | 3567 |
| 3373 test_undefinedIdentifier_initializer() async { | 3568 test_undefinedIdentifier_initializer() async { |
| 3374 Source source = addSource("var a = b;"); | 3569 Source source = addSource("var a = b;"); |
| 3375 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | 3570 await computeAnalysisResult(source); |
| 3571 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); |
| 3376 } | 3572 } |
| 3377 | 3573 |
| 3378 test_undefinedIdentifier_methodInvocation() async { | 3574 test_undefinedIdentifier_methodInvocation() async { |
| 3379 Source source = addSource("f() { C.m(); }"); | 3575 Source source = addSource("f() { C.m(); }"); |
| 3380 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | 3576 await computeAnalysisResult(source); |
| 3577 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); |
| 3381 } | 3578 } |
| 3382 | 3579 |
| 3383 test_undefinedIdentifier_private_getter() async { | 3580 test_undefinedIdentifier_private_getter() async { |
| 3384 addNamedSource( | 3581 addNamedSource( |
| 3385 "/lib.dart", | 3582 "/lib.dart", |
| 3386 r''' | 3583 r''' |
| 3387 library lib; | 3584 library lib; |
| 3388 class A { | 3585 class A { |
| 3389 var _foo; | 3586 var _foo; |
| 3390 }'''); | 3587 }'''); |
| 3391 Source source = addSource(r''' | 3588 Source source = addSource(r''' |
| 3392 import 'lib.dart'; | 3589 import 'lib.dart'; |
| 3393 class B extends A { | 3590 class B extends A { |
| 3394 test() { | 3591 test() { |
| 3395 var v = _foo; | 3592 var v = _foo; |
| 3396 } | 3593 } |
| 3397 }'''); | 3594 }'''); |
| 3398 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | 3595 await computeAnalysisResult(source); |
| 3596 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); |
| 3399 } | 3597 } |
| 3400 | 3598 |
| 3401 test_undefinedIdentifier_private_setter() async { | 3599 test_undefinedIdentifier_private_setter() async { |
| 3402 addNamedSource( | 3600 addNamedSource( |
| 3403 "/lib.dart", | 3601 "/lib.dart", |
| 3404 r''' | 3602 r''' |
| 3405 library lib; | 3603 library lib; |
| 3406 class A { | 3604 class A { |
| 3407 var _foo; | 3605 var _foo; |
| 3408 }'''); | 3606 }'''); |
| 3409 Source source = addSource(r''' | 3607 Source source = addSource(r''' |
| 3410 import 'lib.dart'; | 3608 import 'lib.dart'; |
| 3411 class B extends A { | 3609 class B extends A { |
| 3412 test() { | 3610 test() { |
| 3413 _foo = 42; | 3611 _foo = 42; |
| 3414 } | 3612 } |
| 3415 }'''); | 3613 }'''); |
| 3416 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | 3614 await computeAnalysisResult(source); |
| 3615 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); |
| 3417 } | 3616 } |
| 3418 | 3617 |
| 3419 test_undefinedIdentifierAwait_function() async { | 3618 test_undefinedIdentifierAwait_function() async { |
| 3420 Source source = addSource("void a() { await; }"); | 3619 Source source = addSource("void a() { await; }"); |
| 3421 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT]); | 3620 await computeAnalysisResult(source); |
| 3621 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT]); |
| 3422 } | 3622 } |
| 3423 | 3623 |
| 3424 test_undefinedNamedParameter() async { | 3624 test_undefinedNamedParameter() async { |
| 3425 Source source = addSource(r''' | 3625 Source source = addSource(r''' |
| 3426 f({a, b}) {} | 3626 f({a, b}) {} |
| 3427 main() { | 3627 main() { |
| 3428 f(c: 1); | 3628 f(c: 1); |
| 3429 }'''); | 3629 }'''); |
| 3430 await assertErrors(source, [StaticWarningCode.UNDEFINED_NAMED_PARAMETER]); | 3630 await computeAnalysisResult(source); |
| 3631 assertErrors(source, [StaticWarningCode.UNDEFINED_NAMED_PARAMETER]); |
| 3431 // no verify(), 'c' is not resolved | 3632 // no verify(), 'c' is not resolved |
| 3432 } | 3633 } |
| 3433 | 3634 |
| 3434 test_undefinedSetter() async { | 3635 test_undefinedSetter() async { |
| 3435 addNamedSource("/lib.dart", ""); | 3636 addNamedSource("/lib.dart", ""); |
| 3436 Source source2 = addNamedSource( | 3637 Source source2 = addNamedSource( |
| 3437 "/lib2.dart", | 3638 "/lib2.dart", |
| 3438 r''' | 3639 r''' |
| 3439 import 'lib.dart' as lib; | 3640 import 'lib.dart' as lib; |
| 3440 void f() { | 3641 void f() { |
| 3441 lib.gg = null; | 3642 lib.gg = null; |
| 3442 }'''); | 3643 }'''); |
| 3443 await assertErrors(source2, [StaticWarningCode.UNDEFINED_SETTER]); | 3644 await computeAnalysisResult(source2); |
| 3645 assertErrors(source2, [StaticWarningCode.UNDEFINED_SETTER]); |
| 3444 } | 3646 } |
| 3445 | 3647 |
| 3446 test_undefinedStaticMethodOrGetter_getter() async { | 3648 test_undefinedStaticMethodOrGetter_getter() async { |
| 3447 Source source = addSource(r''' | 3649 Source source = addSource(r''' |
| 3448 class C {} | 3650 class C {} |
| 3449 f(var p) { | 3651 f(var p) { |
| 3450 f(C.m); | 3652 f(C.m); |
| 3451 }'''); | 3653 }'''); |
| 3452 await assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | 3654 await computeAnalysisResult(source); |
| 3655 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
| 3453 } | 3656 } |
| 3454 | 3657 |
| 3455 test_undefinedStaticMethodOrGetter_getter_inSuperclass() async { | 3658 test_undefinedStaticMethodOrGetter_getter_inSuperclass() async { |
| 3456 Source source = addSource(r''' | 3659 Source source = addSource(r''' |
| 3457 class S { | 3660 class S { |
| 3458 static int get g => 0; | 3661 static int get g => 0; |
| 3459 } | 3662 } |
| 3460 class C extends S {} | 3663 class C extends S {} |
| 3461 f(var p) { | 3664 f(var p) { |
| 3462 f(C.g); | 3665 f(C.g); |
| 3463 }'''); | 3666 }'''); |
| 3464 await assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | 3667 await computeAnalysisResult(source); |
| 3668 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
| 3465 } | 3669 } |
| 3466 | 3670 |
| 3467 test_undefinedStaticMethodOrGetter_method() async { | 3671 test_undefinedStaticMethodOrGetter_method() async { |
| 3468 Source source = addSource(r''' | 3672 Source source = addSource(r''' |
| 3469 class C {} | 3673 class C {} |
| 3470 f(var p) { | 3674 f(var p) { |
| 3471 f(C.m()); | 3675 f(C.m()); |
| 3472 }'''); | 3676 }'''); |
| 3473 await assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); | 3677 await computeAnalysisResult(source); |
| 3678 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
| 3474 } | 3679 } |
| 3475 | 3680 |
| 3476 test_undefinedStaticMethodOrGetter_method_inSuperclass() async { | 3681 test_undefinedStaticMethodOrGetter_method_inSuperclass() async { |
| 3477 Source source = addSource(r''' | 3682 Source source = addSource(r''' |
| 3478 class S { | 3683 class S { |
| 3479 static m() {} | 3684 static m() {} |
| 3480 } | 3685 } |
| 3481 class C extends S {} | 3686 class C extends S {} |
| 3482 f(var p) { | 3687 f(var p) { |
| 3483 f(C.m()); | 3688 f(C.m()); |
| 3484 }'''); | 3689 }'''); |
| 3485 await assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); | 3690 await computeAnalysisResult(source); |
| 3691 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
| 3486 } | 3692 } |
| 3487 | 3693 |
| 3488 test_undefinedStaticMethodOrGetter_setter_inSuperclass() async { | 3694 test_undefinedStaticMethodOrGetter_setter_inSuperclass() async { |
| 3489 Source source = addSource(r''' | 3695 Source source = addSource(r''' |
| 3490 class S { | 3696 class S { |
| 3491 static set s(int i) {} | 3697 static set s(int i) {} |
| 3492 } | 3698 } |
| 3493 class C extends S {} | 3699 class C extends S {} |
| 3494 f(var p) { | 3700 f(var p) { |
| 3495 f(C.s = 1); | 3701 f(C.s = 1); |
| 3496 }'''); | 3702 }'''); |
| 3497 await assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]); | 3703 await computeAnalysisResult(source); |
| 3704 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]); |
| 3498 } | 3705 } |
| 3499 | 3706 |
| 3500 test_voidReturnForGetter() async { | 3707 test_voidReturnForGetter() async { |
| 3501 Source source = addSource(r''' | 3708 Source source = addSource(r''' |
| 3502 class S { | 3709 class S { |
| 3503 void get value {} | 3710 void get value {} |
| 3504 }'''); | 3711 }'''); |
| 3505 await assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]); | 3712 await computeAnalysisResult(source); |
| 3713 assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]); |
| 3506 } | 3714 } |
| 3507 } | 3715 } |
| OLD | NEW |