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

Unified Diff: tests/compiler/dart2js/simple_inferrer_test.dart

Issue 14120008: Add special rules in the inferrer that some int operations return an int. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/compiler/dart2js/mock_compiler.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/compiler/dart2js/simple_inferrer_test.dart
===================================================================
--- tests/compiler/dart2js/simple_inferrer_test.dart (revision 21800)
+++ tests/compiler/dart2js/simple_inferrer_test.dart (working copy)
@@ -41,12 +41,12 @@
return a++;
}
-returnNum3() {
+returnInt5() {
var a = 42;
return ++a;
}
-returnNum4() {
+returnInt6() {
var a = 42;
a++;
return a;
@@ -65,6 +65,24 @@
return (42);
}
+returnInt7() {
+ return 42.abs();
+}
+
+returnInt8() {
+ return 42.remainder(54);
+}
+
+returnDynamic1() {
+ // Ensure that we don't intrisify a wrong call to [int.remainder].
+ return 42.remainder();
+}
+
+returnDynamic2() {
+ // Ensure that we don't intrisify a wrong call to [int.abs].
+ return 42.abs(42);
+}
+
get topLevelGetter => 42;
returnDynamic() => topLevelGetter(42);
@@ -75,26 +93,26 @@
get myField => 42;
set myField(a) {}
- returnNum1() => ++myField;
- returnNum2() => ++this.myField;
- returnNum3() => this.myField += 42;
- returnNum4() => myField += 42;
+ returnInt1() => ++myField;
+ returnInt2() => ++this.myField;
+ returnInt3() => this.myField += 42;
+ returnInt4() => myField += 42;
operator[](index) => 42;
operator[]= (index, value) {}
- returnNum5() => ++this[0];
- returnNum6() => this[0] += 1;
+ returnInt5() => ++this[0];
+ returnInt6() => this[0] += 1;
}
class B extends A {
B() : super.generative();
- returnNum1() => ++new A().myField;
- returnNum2() => new A().myField += 4;
- returnNum3() => ++new A()[0];
- returnNum4() => new A()[0] += 42;
- returnNum5() => ++super.myField;
- returnNum6() => super.myField += 4;
- returnNum7() => ++super[0];
- returnNum8() => super[0] += 54;
+ returnInt1() => ++new A().myField;
+ returnInt2() => new A().myField += 4;
+ returnInt3() => ++new A()[0];
+ returnInt4() => new A()[0] += 42;
+ returnInt5() => ++super.myField;
+ returnInt6() => super.myField += 4;
+ returnInt7() => ++super[0];
+ returnInt8() => super[0] += 54;
}
main() {
@@ -106,26 +124,30 @@
returnInt4();
returnDouble(true);
returnGiveUp(true);
- returnNum3();
- returnNum4();
+ returnInt5();
+ returnInt6();
+ returnInt7();
+ returnInt8();
returnIntOrNull(true);
returnDynamic();
+ returnDynamic1();
+ returnDynamic2();
new A() == null;
- new A()..returnNum1()
- ..returnNum2()
- ..returnNum3()
- ..returnNum4()
- ..returnNum5()
- ..returnNum6();
+ new A()..returnInt1()
+ ..returnInt2()
+ ..returnInt3()
+ ..returnInt4()
+ ..returnInt5()
+ ..returnInt6();
- new B()..returnNum1()
- ..returnNum2()
- ..returnNum3()
- ..returnNum4()
- ..returnNum5()
- ..returnNum6()
- ..returnNum7()
- ..returnNum8();
+ new B()..returnInt1()
+ ..returnInt2()
+ ..returnInt3()
+ ..returnInt4()
+ ..returnInt5()
+ ..returnInt6()
+ ..returnInt7()
+ ..returnInt8();
}
""";
@@ -148,12 +170,16 @@
checkReturn('returnInt2', typesInferrer.intType);
checkReturn('returnDouble', typesInferrer.doubleType);
checkReturn('returnGiveUp', interceptorType);
- checkReturn('returnNum3', typesInferrer.numType);
- checkReturn('returnNum4', typesInferrer.numType);
+ checkReturn('returnInt5', typesInferrer.intType);
+ checkReturn('returnInt6', typesInferrer.intType);
checkReturn('returnIntOrNull', typesInferrer.intType.nullable());
checkReturn('returnInt3', typesInferrer.intType);
checkReturn('returnDynamic', typesInferrer.dynamicType);
checkReturn('returnInt4', typesInferrer.intType);
+ checkReturn('returnInt7', typesInferrer.intType);
+ checkReturn('returnInt8', typesInferrer.intType);
+ checkReturn('returnDynamic1', typesInferrer.dynamicType);
+ checkReturn('returnDynamic2', typesInferrer.dynamicType);
checkReturnInClass(String className, String methodName, type) {
var cls = findElement(compiler, className);
@@ -161,22 +187,22 @@
Expect.equals(type, typesInferrer.internal.returnTypeOf[element]);
}
- checkReturnInClass('A', 'returnNum1', typesInferrer.numType);
- checkReturnInClass('A', 'returnNum2', typesInferrer.numType);
- checkReturnInClass('A', 'returnNum3', typesInferrer.numType);
- checkReturnInClass('A', 'returnNum4', typesInferrer.numType);
- checkReturnInClass('A', 'returnNum5', typesInferrer.numType);
- checkReturnInClass('A', 'returnNum6', typesInferrer.numType);
+ checkReturnInClass('A', 'returnInt1', typesInferrer.intType);
+ checkReturnInClass('A', 'returnInt2', typesInferrer.intType);
+ checkReturnInClass('A', 'returnInt3', typesInferrer.intType);
+ checkReturnInClass('A', 'returnInt4', typesInferrer.intType);
+ checkReturnInClass('A', 'returnInt5', typesInferrer.intType);
+ checkReturnInClass('A', 'returnInt6', typesInferrer.intType);
checkReturnInClass('A', '==', interceptorType);
- checkReturnInClass('B', 'returnNum1', typesInferrer.numType);
- checkReturnInClass('B', 'returnNum2', typesInferrer.numType);
- checkReturnInClass('B', 'returnNum3', typesInferrer.numType);
- checkReturnInClass('B', 'returnNum4', typesInferrer.numType);
- checkReturnInClass('B', 'returnNum5', typesInferrer.numType);
- checkReturnInClass('B', 'returnNum6', typesInferrer.numType);
- checkReturnInClass('B', 'returnNum7', typesInferrer.numType);
- checkReturnInClass('B', 'returnNum8', typesInferrer.numType);
+ checkReturnInClass('B', 'returnInt1', typesInferrer.intType);
+ checkReturnInClass('B', 'returnInt2', typesInferrer.intType);
+ checkReturnInClass('B', 'returnInt3', typesInferrer.intType);
+ checkReturnInClass('B', 'returnInt4', typesInferrer.intType);
+ checkReturnInClass('B', 'returnInt5', typesInferrer.intType);
+ checkReturnInClass('B', 'returnInt6', typesInferrer.intType);
+ checkReturnInClass('B', 'returnInt7', typesInferrer.intType);
+ checkReturnInClass('B', 'returnInt8', typesInferrer.intType);
checkFactoryConstructor(String className) {
var cls = findElement(compiler, className);
« no previous file with comments | « tests/compiler/dart2js/mock_compiler.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698