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

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

Issue 147353010: Infer types for compile-time constant closures. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Update status file and one more test. Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, 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 // Test that we are analyzing field parameters correctly.
6
7 import 'package:expect/expect.dart'; 5 import 'package:expect/expect.dart';
8 import "package:async_helper/async_helper.dart"; 6 import "package:async_helper/async_helper.dart";
9 import 'compiler_helper.dart'; 7 import 'compiler_helper.dart';
10 import 'parser_helper.dart';
11 8
12 const String TEST = """ 9 const String TEST = """
13 10
14 class A { 11 method(a) { // Called only via [foo2] with a small integer.
15 final dynamicField; 12 return a;
16 A() : dynamicField = 42; 13 }
17 A.bar(this.dynamicField); 14
15 const foo = method;
16
17 returnInt() {
18 return foo(54);
18 } 19 }
19 20
20 main() { 21 main() {
21 new A(); 22 returnInt();
22 new A.bar('foo'); 23 method(55.2);
23 } 24 }
24 """; 25 """;
25 26
27
26 void main() { 28 void main() {
27 Uri uri = new Uri(scheme: 'source'); 29 Uri uri = new Uri(scheme: 'source');
28 var compiler = compilerFor(TEST, uri); 30 var compiler = compilerFor(TEST, uri);
29 asyncTest(() => compiler.runCompiler(uri).then((_) { 31 asyncTest(() => compiler.runCompiler(uri).then((_) {
30 var typesInferrer = compiler.typesTask.typesInferrer; 32 var typesInferrer = compiler.typesTask.typesInferrer;
31 33
32 checkFieldTypeInClass(String className, String fieldName, type) { 34 checkArgument(String functionName, type) {
33 var cls = findElement(compiler, className); 35 var functionElement = findElement(compiler, functionName);
34 var element = cls.lookupLocalMember(fieldName); 36 var signature = functionElement.functionSignature;
37 var element = signature.requiredParameters.first;
35 Expect.equals(type, 38 Expect.equals(type,
36 typesInferrer.getTypeOfElement(element).simplify(compiler)); 39 typesInferrer.getTypeOfElement(element).simplify(compiler),
40 functionName);
37 } 41 }
38 42
39 checkFieldTypeInClass('A', 'dynamicField', 43 checkArgument('method', compiler.typesTask.numType);
40 findTypeMask(compiler, 'Interceptor', 'nonNullSubclass'));
41 })); 44 }));
42 } 45 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698