Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 import 'package:expect/expect.dart'; | 5 import 'package:expect/expect.dart'; |
| 6 import | 6 import |
| 7 '../../../sdk/lib/_internal/compiler/implementation/types/types.dart' | 7 '../../../sdk/lib/_internal/compiler/implementation/types/types.dart' |
| 8 show TypeMask; | 8 show TypeMask; |
| 9 | 9 |
| 10 import 'compiler_helper.dart'; | 10 import 'compiler_helper.dart'; |
| (...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 357 | 357 |
| 358 testReturnElementOfConstList2() { | 358 testReturnElementOfConstList2() { |
| 359 return topLevelConstList[0]; | 359 return topLevelConstList[0]; |
| 360 } | 360 } |
| 361 | 361 |
| 362 testReturnItselfOrInt(a) { | 362 testReturnItselfOrInt(a) { |
| 363 if (a) return 42; | 363 if (a) return 42; |
| 364 return testReturnItselfOrInt(a); | 364 return testReturnItselfOrInt(a); |
| 365 } | 365 } |
| 366 | 366 |
| 367 testReturnInvokeDynamicGetter() => new A().myFactory(); | |
|
kasperl
2013/06/21 05:58:00
Extend test case with calling a field.
| |
| 368 | |
| 367 var topLevelConstList = const [42]; | 369 var topLevelConstList = const [42]; |
| 368 | 370 |
| 369 get topLevelGetter => 42; | 371 get topLevelGetter => 42; |
| 370 returnDynamic() => topLevelGetter(42); | 372 returnDynamic() => topLevelGetter(42); |
| 371 returnTopLevelGetter() => topLevelGetter; | 373 returnTopLevelGetter() => topLevelGetter; |
| 372 | 374 |
| 373 class A { | 375 class A { |
| 374 factory A() = A.generative; | 376 factory A() = A.generative; |
| 375 A.generative(); | 377 A.generative(); |
| 376 operator==(other) => 42; | 378 operator==(other) => 42; |
| 377 | 379 |
| 378 get myField => 42; | 380 get myField => 42; |
| 379 set myField(a) {} | 381 set myField(a) {} |
| 380 returnInt1() => ++myField; | 382 returnInt1() => ++myField; |
| 381 returnInt2() => ++this.myField; | 383 returnInt2() => ++this.myField; |
| 382 returnInt3() => this.myField += 42; | 384 returnInt3() => this.myField += 42; |
| 383 returnInt4() => myField += 42; | 385 returnInt4() => myField += 42; |
| 384 operator[](index) => 42; | 386 operator[](index) => 42; |
| 385 operator[]= (index, value) {} | 387 operator[]= (index, value) {} |
| 386 returnInt5() => ++this[0]; | 388 returnInt5() => ++this[0]; |
| 387 returnInt6() => this[0] += 1; | 389 returnInt6() => this[0] += 1; |
| 390 | |
| 391 get myFactory => () => 42; | |
|
kasperl
2013/06/21 05:58:00
var myFactory2 = () => 87;
| |
| 388 } | 392 } |
| 389 | 393 |
| 390 class B extends A { | 394 class B extends A { |
| 391 B() : super.generative(); | 395 B() : super.generative(); |
| 392 returnInt1() => ++new A().myField; | 396 returnInt1() => ++new A().myField; |
| 393 returnInt2() => new A().myField += 4; | 397 returnInt2() => new A().myField += 4; |
| 394 returnInt3() => ++new A()[0]; | 398 returnInt3() => ++new A()[0]; |
| 395 returnInt4() => new A()[0] += 42; | 399 returnInt4() => new A()[0] += 42; |
| 396 returnInt5() => ++super.myField; | 400 returnInt5() => ++super.myField; |
| 397 returnInt6() => super.myField += 4; | 401 returnInt6() => super.myField += 4; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 466 ..returnInt3() | 470 ..returnInt3() |
| 467 ..returnInt4() | 471 ..returnInt4() |
| 468 ..returnInt5() | 472 ..returnInt5() |
| 469 ..returnInt6() | 473 ..returnInt6() |
| 470 ..returnInt7() | 474 ..returnInt7() |
| 471 ..returnInt8() | 475 ..returnInt8() |
| 472 ..returnInt9(); | 476 ..returnInt9(); |
| 473 testReturnElementOfConstList1(); | 477 testReturnElementOfConstList1(); |
| 474 testReturnElementOfConstList2(); | 478 testReturnElementOfConstList2(); |
| 475 testReturnItselfOrInt(topLevelGetter()); | 479 testReturnItselfOrInt(topLevelGetter()); |
| 480 testReturnInvokeDynamicGetter(); | |
| 476 } | 481 } |
| 477 """; | 482 """; |
| 478 | 483 |
| 479 void main() { | 484 void main() { |
| 480 Uri uri = new Uri(scheme: 'source'); | 485 Uri uri = new Uri(scheme: 'source'); |
| 481 var compiler = compilerFor(TEST, uri); | 486 var compiler = compilerFor(TEST, uri); |
| 482 compiler.runCompiler(uri); | 487 compiler.runCompiler(uri); |
| 483 var typesInferrer = compiler.typesTask.typesInferrer; | 488 var typesInferrer = compiler.typesTask.typesInferrer; |
| 484 | 489 |
| 485 checkReturn(String name, type) { | 490 checkReturn(String name, type) { |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 541 checkReturn('testSwitch2', typesInferrer.intType); | 546 checkReturn('testSwitch2', typesInferrer.intType); |
| 542 checkReturn('testSwitch3', interceptorType.nullable()); | 547 checkReturn('testSwitch3', interceptorType.nullable()); |
| 543 checkReturn('testSwitch4', typesInferrer.intType); | 548 checkReturn('testSwitch4', typesInferrer.intType); |
| 544 checkReturn('testContinue1', interceptorType.nullable()); | 549 checkReturn('testContinue1', interceptorType.nullable()); |
| 545 checkReturn('testBreak1', interceptorType.nullable()); | 550 checkReturn('testBreak1', interceptorType.nullable()); |
| 546 checkReturn('testContinue2', interceptorType.nullable()); | 551 checkReturn('testContinue2', interceptorType.nullable()); |
| 547 checkReturn('testBreak2', typesInferrer.intType.nullable()); | 552 checkReturn('testBreak2', typesInferrer.intType.nullable()); |
| 548 checkReturn('testReturnElementOfConstList1', typesInferrer.intType); | 553 checkReturn('testReturnElementOfConstList1', typesInferrer.intType); |
| 549 checkReturn('testReturnElementOfConstList2', typesInferrer.intType); | 554 checkReturn('testReturnElementOfConstList2', typesInferrer.intType); |
| 550 checkReturn('testReturnItselfOrInt', typesInferrer.intType); | 555 checkReturn('testReturnItselfOrInt', typesInferrer.intType); |
| 556 checkReturn('testReturnInvokeDynamicGetter', typesInferrer.dynamicType); | |
| 551 | 557 |
| 552 checkReturnInClass(String className, String methodName, type) { | 558 checkReturnInClass(String className, String methodName, type) { |
| 553 var cls = findElement(compiler, className); | 559 var cls = findElement(compiler, className); |
| 554 var element = cls.lookupLocalMember(buildSourceString(methodName)); | 560 var element = cls.lookupLocalMember(buildSourceString(methodName)); |
| 555 Expect.equals(type, | 561 Expect.equals(type, |
| 556 typesInferrer.internal.returnTypeOf[element].simplify(compiler)); | 562 typesInferrer.internal.returnTypeOf[element].simplify(compiler)); |
| 557 } | 563 } |
| 558 | 564 |
| 559 checkReturnInClass('A', 'returnInt1', typesInferrer.intType); | 565 checkReturnInClass('A', 'returnInt1', typesInferrer.intType); |
| 560 checkReturnInClass('A', 'returnInt2', typesInferrer.intType); | 566 checkReturnInClass('A', 'returnInt2', typesInferrer.intType); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 575 checkReturnInClass('B', 'returnInt9', typesInferrer.intType); | 581 checkReturnInClass('B', 'returnInt9', typesInferrer.intType); |
| 576 | 582 |
| 577 checkFactoryConstructor(String className) { | 583 checkFactoryConstructor(String className) { |
| 578 var cls = findElement(compiler, className); | 584 var cls = findElement(compiler, className); |
| 579 var element = cls.localLookup(buildSourceString(className)); | 585 var element = cls.localLookup(buildSourceString(className)); |
| 580 Expect.equals(new TypeMask.nonNullExact(cls.rawType), | 586 Expect.equals(new TypeMask.nonNullExact(cls.rawType), |
| 581 typesInferrer.internal.returnTypeOf[element]); | 587 typesInferrer.internal.returnTypeOf[element]); |
| 582 } | 588 } |
| 583 checkFactoryConstructor('A'); | 589 checkFactoryConstructor('A'); |
| 584 } | 590 } |
| OLD | NEW |