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

Side by Side Diff: tests/compiler/dart2js/simple_inferrer_postfix_prefix_test.dart

Issue 17759007: First pass at asynchronous input loading in dart2js. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 'compiler_helper.dart'; 6 import 'compiler_helper.dart';
7 import 'parser_helper.dart'; 7 import 'parser_helper.dart';
8 8
9 const String TEST = """ 9 const String TEST = """
10 10
11 class A { 11 class A {
12 get foo => 'string'; 12 get foo => 'string';
13 set foo(value) {} 13 set foo(value) {}
14 operator[](index) => 'string'; 14 operator[](index) => 'string';
15 operator[]=(index, value) {} 15 operator[]=(index, value) {}
16 16
17 returnDynamic1() => foo--; 17 returnDynamic1() => foo--;
18 returnNum1() => --foo; 18 returnNum1() => --foo;
19 returnNum2() => foo -= 42; 19 returnNum2() => foo -= 42;
20 20
21 returnDynamic2() => this[index]--; 21 returnDynamic2() => this[index]--;
22 returnNum3() => --this[index]; 22 returnNum3() => --this[index];
23 returnNum4() => this[index] -= 42; 23 returnNum4() => this[index] -= 42;
24 24
25 returnDynamic3() => this.bar--; 25 returnDynamic3() => this.bar--;
26 returnNum5() => --this.bar; 26 returnNum5() => --this.bar;
(...skipping 29 matching lines...) Expand all
56 ..returnDynamic1() 56 ..returnDynamic1()
57 ..returnDynamic2() 57 ..returnDynamic2()
58 ..returnDynamic3() 58 ..returnDynamic3()
59 ..returnDynamic4(); 59 ..returnDynamic4();
60 } 60 }
61 """; 61 """;
62 62
63 void main() { 63 void main() {
64 Uri uri = new Uri(scheme: 'source'); 64 Uri uri = new Uri(scheme: 'source');
65 var compiler = compilerFor(TEST, uri); 65 var compiler = compilerFor(TEST, uri);
66 compiler.runCompiler(uri); 66 compiler.runCompiler(uri).then((_) {
67 var typesInferrer = compiler.typesTask.typesInferrer; 67 var typesInferrer = compiler.typesTask.typesInferrer;
68 68
69 checkReturnInClass(String className, String methodName, type) { 69 checkReturnInClass(String className, String methodName, type) {
70 var cls = findElement(compiler, className); 70 var cls = findElement(compiler, className);
71 var element = cls.lookupLocalMember(buildSourceString(methodName)); 71 var element = cls.lookupLocalMember(buildSourceString(methodName));
72 Expect.equals(type, 72 Expect.equals(type,
73 typesInferrer.internal.returnTypeOf[element].simplify(compiler)); 73 typesInferrer.internal.returnTypeOf[element].simplify(compiler));
74 } 74 }
75 75
76 var subclassOfInterceptor = 76 var subclassOfInterceptor =
77 findTypeMask(compiler, 'Interceptor', 'nonNullSubclass'); 77 findTypeMask(compiler, 'Interceptor', 'nonNullSubclass');
78 78
79 checkReturnInClass('A', 'returnNum1', typesInferrer.numType); 79 checkReturnInClass('A', 'returnNum1', typesInferrer.numType);
80 checkReturnInClass('A', 'returnNum2', typesInferrer.numType); 80 checkReturnInClass('A', 'returnNum2', typesInferrer.numType);
81 checkReturnInClass('A', 'returnNum3', typesInferrer.numType); 81 checkReturnInClass('A', 'returnNum3', typesInferrer.numType);
82 checkReturnInClass('A', 'returnNum4', typesInferrer.numType); 82 checkReturnInClass('A', 'returnNum4', typesInferrer.numType);
83 checkReturnInClass('A', 'returnNum5', typesInferrer.numType); 83 checkReturnInClass('A', 'returnNum5', typesInferrer.numType);
84 checkReturnInClass('A', 'returnNum6', typesInferrer.numType); 84 checkReturnInClass('A', 'returnNum6', typesInferrer.numType);
85 checkReturnInClass('A', 'returnDynamic1', subclassOfInterceptor); 85 checkReturnInClass('A', 'returnDynamic1', subclassOfInterceptor);
86 checkReturnInClass('A', 'returnDynamic2', subclassOfInterceptor); 86 checkReturnInClass('A', 'returnDynamic2', subclassOfInterceptor);
87 checkReturnInClass('A', 'returnDynamic3', typesInferrer.dynamicType); 87 checkReturnInClass('A', 'returnDynamic3', typesInferrer.dynamicType);
88 88
89 checkReturnInClass('B', 'returnString1', typesInferrer.stringType); 89 checkReturnInClass('B', 'returnString1', typesInferrer.stringType);
90 checkReturnInClass('B', 'returnString2', typesInferrer.stringType); 90 checkReturnInClass('B', 'returnString2', typesInferrer.stringType);
91 checkReturnInClass('B', 'returnDynamic1', typesInferrer.dynamicType); 91 checkReturnInClass('B', 'returnDynamic1', typesInferrer.dynamicType);
92 checkReturnInClass('B', 'returnDynamic2', typesInferrer.dynamicType); 92 checkReturnInClass('B', 'returnDynamic2', typesInferrer.dynamicType);
93 checkReturnInClass('B', 'returnDynamic3', typesInferrer.dynamicType); 93 checkReturnInClass('B', 'returnDynamic3', typesInferrer.dynamicType);
94 checkReturnInClass('B', 'returnDynamic4', typesInferrer.dynamicType); 94 checkReturnInClass('B', 'returnDynamic4', typesInferrer.dynamicType);
95 });
95 } 96 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698