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

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

Issue 12434002: Infer SendSet node correctly. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 10 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
Index: tests/compiler/dart2js/simple_inferrer_postfix_prefix_test.dart
===================================================================
--- tests/compiler/dart2js/simple_inferrer_postfix_prefix_test.dart (revision 19455)
+++ tests/compiler/dart2js/simple_inferrer_postfix_prefix_test.dart (working copy)
@@ -3,39 +3,56 @@
// BSD-style license that can be found in the LICENSE file.
import 'compiler_helper.dart';
+import 'parser_helper.dart';
const String TEST = """
-returnNum1(a) {
- if (a) return 1;
- else return 2.0;
-}
-returnNum2(a) {
- if (a) return 1.0;
- else return 2;
-}
+class A {
+ get foo => 'string';
+ set foo(value) {}
+ operator[](index) => 'string';
+ operator[]=(index, value) {}
+
+ returnString1() => foo--;
+ returnNum1() => --foo;
+ returnNum2() => foo -= 42;
-returnInt(a) {
- if (a) return 1;
- else return 2;
-}
+ returnDynamic1() => this[index]--;
+ returnNum3() => --this[index];
+ returnNum4() => this[index] -= 42;
-returnDouble(a) {
- if (a) return 1.0;
- else return 2.0;
+ returnDynamic2() => this.bar--;
+ returnNum5() => --this.bar;
+ returnNum6() => this.bar -= 42;
}
-returnGiveUp(a) {
- if (a) return 1;
- else return 'foo';
+class B extends A {
+ returnString1() => super.foo--;
+ returnNum1() => --super.foo;
+ returnNum2() => super.foo -= 42;
+
+ returnDynamic1() => super[index]--;
+ returnNum3() => --super[index];
+ returnNum4() => super[index] -= 42;
}
main() {
- returnNum1(true);
- returnNum2(true);
- returnInt(true);
- returnDouble(true);
- returnGiveUp(true);
+ new A()..returnNum1()
+ ..returnNum2()
+ ..returnNum3()
+ ..returnNum4()
+ ..returnNum5()
+ ..returnNum6()
+ ..returnString1()
+ ..returnDynamic1()
+ ..returnDynamic2();
+
+ new B()..returnNum1()
+ ..returnNum2()
+ ..returnNum3()
+ ..returnNum4()
+ ..returnString1()
+ ..returnDynamic1();
}
""";
@@ -45,18 +62,26 @@
compiler.runCompiler(uri);
var typesInferrer = compiler.typesTask.typesInferrer;
- var element = findElement(compiler, 'returnNum1');
- Expect.equals(compiler.numClass, typesInferrer.returnTypeOf[element]);
+ checkReturnInClass(String className, String methodName, type) {
+ var cls = findElement(compiler, className);
+ var element = cls.lookupLocalMember(buildSourceString(methodName));
+ Expect.equals(type, typesInferrer.returnTypeOf[element]);
+ }
- element = findElement(compiler, 'returnNum2');
- Expect.equals(compiler.numClass, typesInferrer.returnTypeOf[element]);
+ checkReturnInClass('A', 'returnNum1', compiler.numClass);
+ checkReturnInClass('A', 'returnNum2', compiler.numClass);
+ checkReturnInClass('A', 'returnNum3', compiler.numClass);
+ checkReturnInClass('A', 'returnNum4', compiler.numClass);
+ checkReturnInClass('A', 'returnNum5', compiler.numClass);
+ checkReturnInClass('A', 'returnNum6', compiler.numClass);
+ checkReturnInClass('A', 'returnDynamic1', compiler.dynamicClass);
+ checkReturnInClass('A', 'returnDynamic2', compiler.dynamicClass);
+ checkReturnInClass('A', 'returnString1', compiler.stringClass);
- element = findElement(compiler, 'returnInt');
- Expect.equals(compiler.intClass, typesInferrer.returnTypeOf[element]);
-
- element = findElement(compiler, 'returnDouble');
- Expect.equals(compiler.doubleClass, typesInferrer.returnTypeOf[element]);
-
- element = findElement(compiler, 'returnGiveUp');
- Expect.equals(typesInferrer.giveUpType, typesInferrer.returnTypeOf[element]);
+ checkReturnInClass('B', 'returnNum1', compiler.numClass);
+ checkReturnInClass('B', 'returnNum2', compiler.numClass);
+ checkReturnInClass('B', 'returnNum3', compiler.numClass);
+ checkReturnInClass('B', 'returnNum4', compiler.numClass);
+ checkReturnInClass('B', 'returnString1', compiler.stringClass);
+ checkReturnInClass('B', 'returnDynamic1', compiler.dynamicClass);
}

Powered by Google App Engine
This is Rietveld 408576698