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

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

Issue 16077015: Rip-off the backend type inferrer. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 6 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/field_type_inferer_test.dart
===================================================================
--- tests/compiler/dart2js/field_type_inferer_test.dart (revision 23797)
+++ tests/compiler/dart2js/field_type_inferer_test.dart (working copy)
@@ -1,394 +0,0 @@
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import "package:expect/expect.dart";
-import '../../../sdk/lib/_internal/compiler/implementation/js_backend/js_backend.dart';
-import '../../../sdk/lib/_internal/compiler/implementation/ssa/ssa.dart';
-import '../../../sdk/lib/_internal/compiler/implementation/scanner/scannerlib.dart';
-
-import 'compiler_helper.dart';
-import 'parser_helper.dart';
-
-void compileAndFind(String code,
- String className,
- String memberName,
- bool disableInlining,
- check(compiler, element)) {
- Uri uri = new Uri(scheme: 'source');
- var compiler = compilerFor(code, uri);
- compiler.runCompiler(uri);
- compiler.disableInlining = disableInlining;
- var cls = findElement(compiler, className);
- var member = cls.lookupMember(buildSourceString(memberName));
- return check(compiler.backend, member);
-}
-
-const String TEST_1 = r"""
- class A {
- int f;
- }
- main() { new A(); }
-""";
-
-const String TEST_2 = r"""
- class A {
- int f1;
- int f2 = 1;
- }
- main() { new A(); }
-""";
-
-const String TEST_3 = r"""
- class A {
- int f1;
- int f2;
- A() : f1 = 1;
- }
- main() { new A().f2 = 2; }
-""";
-
-const String TEST_4 = r"""
- class A {
- int f1;
- int f2;
- A() : f1 = 1;
- }
- main() {
- A a = new A();
- a.f1 = "a";
- a.f2 = "a";
- }
-""";
-
-const String TEST_5 = r"""
- class A {
- int f1 = 1;
- int f2 = 1;
- A(x) {
- f1 = "1";
- if (x) {
- f2 = "1";
- } else {
- f2 = "2";
- }
- }
- }
- main() {
- new A(true);
- new A(false);
- }
-""";
-
-const String TEST_6 = r"""
- class A {
- int f1 = 1;
- int f2 = 1;
- A(x) {
- f1 = "1";
- if (x) {
- f2 = "1";
- } else {
- f2 = "2";
- }
- if (x) {
- f2 = new List();
- } else {
- f2 = new List();
- }
- }
- }
- main() {
- new A(true);
- new A(false);
- }
-""";
-
-const String TEST_7 = r"""
- class A {
- int f1 = 1;
- int f2 = 1;
- A(x) {
- f1 = "1";
- if (x) {
- f2 = "1";
- } else {
- f2 = "2";
- }
- if (x) {
- f1 = new List();
- f2 = new List();
- } else {
- f2 = new List();
- }
- }
- }
- main() {
- new A(true);
- new A(false);
- }
-""";
-
-const String TEST_8 = r"""
- class A {
- int f;
- A(x) {
- if (x) {
- f = "1";
- } else {
- }
- }
- }
- main() {
- new A(true);
- new A(false);
- }
-""";
-
-const String TEST_9 = r"""
- class A {
- int f;
- A(x) {
- if (x) {
- } else {
- f = "1";
- }
- }
- }
- main() {
- new A(true);
- new A(false);
- }
-""";
-
-const String TEST_10 = r"""
- class A {
- int f;
- A() {
- f = 1;
- }
- m() => f + 1;
- }
- void f(x) { x.f = "2"; }
- main() {
- A a;
- f(a);
- a = new A();
- a.m();
- }
-""";
-
-
-const String TEST_11 = r"""
- class S {
- int fs = 1;
- ms() { fs = 1; }
- }
-
- class A extends S {
- m() { ms(); }
- }
-
- main() {
- A a = new A();
- a.m();
- }
-""";
-
-const String TEST_12 = r"""
- class S {
- int fs = 1;
- S() { fs = "2"; }
- }
-
- class A extends S {
- }
-
- main() {
- A a = new A();
- }
-""";
-
-const String TEST_13 = r"""
- class S {
- int fs;
- S() { fs = 1; }
- }
-
- class A extends S {
- A() { fs = 1; }
- }
-
- main() {
- A a = new A();
- }
-""";
-
-const String TEST_14 = r"""
- class A {
- var f;
- A() { f = 1; }
- A.other() { f = 2; }
- }
-
- main() {
- A a = new A();
- a = new A.other();
- }
-""";
-
-const String TEST_15 = r"""
- class A {
- var f;
- A() { f = "1"; }
- A.other() { f = new List(); }
- }
-
- main() {
- A a = new A();
- a = new A.other();
- }
-""";
-
-const String TEST_16 = r"""
- class A {
- var f;
- A() { f = "1"; }
- A.other() : f = 1 { }
- }
-
- main() {
- A a = new A();
- a = new A.other();
- }
-""";
-
-const String TEST_17 = r"""
- g([p]) => p.f = 1;
- class A {
- var f;
- A(x) {
- var a;
- if (x) {
- a = this;
- } else {
- a = g;
- }
- a();
- }
- }
- main() {
- new A(true);
- new A(false);
- }
-""";
-
-// In this test this is only used in a field set (f3 = a) and therefore we infer
-// types for f1, f2 and f3.
-const String TEST_18 = r"""
- class A {
- var f1;
- var f2;
- var f3;
- A(x) {
- f1 = 1;
- var a;
- if (x) {
- f2 = "1";
- a = this;
- } else {
- a = 1;
- f2 = "1";
- }
- f3 = a;
- }
- }
- main() {
- new A(true);
- new A(false);
- }
-""";
-
-// In this test this is exposed through a(), and therefore we don't infer
-// any types.
-const String TEST_19 = r"""
- class A {
- var f1;
- var f2;
- var f3;
- A(x) {
- f1 = 1;
- var a;
- if (x) {
- f2 = "1";
- a = this;
- } else {
- a = 1;
- f2 = "1";
- }
- f3 = a;
- a();
- }
- }
- main() {
- new A(true);
- new A(false);
- }
-""";
-
-void doTest(String test, bool disableInlining, Map<String, dynamic> fields) {
- fields.forEach((String name, type) {
- compileAndFind(
- test,
- 'A',
- name,
- disableInlining,
- (backend, field) {
- HType inferredType =
- backend.optimisticFieldType(field).simplify(backend.compiler);
- if (type is Function) type = type(backend.compiler);
- Expect.equals(type, inferredType);
- });
- });
-}
-
-void runTest(String test, Map<String, HType> fields) {
- doTest(test, false, fields);
- doTest(test, true, fields);
-}
-
-void test() {
- HType interceptorType(compiler) =>
- findHType(compiler, 'Interceptor', 'nonNullSubclass');
-
- runTest(TEST_1, {'f': HType.NULL});
- runTest(TEST_2, {'f1': HType.NULL, 'f2': HType.INTEGER});
- runTest(TEST_3, {'f1': HType.INTEGER, 'f2': HType.INTEGER_OR_NULL});
- runTest(TEST_4, {'f1': interceptorType, 'f2': HType.STRING_OR_NULL});
- runTest(TEST_5, {'f1': HType.STRING, 'f2': HType.STRING});
- runTest(TEST_6, {'f1': HType.STRING, 'f2': HType.EXTENDABLE_ARRAY});
- runTest(TEST_7, {'f1': HType.INDEXABLE_PRIMITIVE,
- 'f2': HType.EXTENDABLE_ARRAY});
- runTest(TEST_8, {'f': HType.UNKNOWN});
- runTest(TEST_9, {'f': HType.UNKNOWN});
- runTest(TEST_10, {'f': HType.UNKNOWN});
- runTest(TEST_11, {'fs': HType.INTEGER});
- runTest(TEST_12, {'fs': HType.STRING});
- // TODO(sgjesse): We should actually infer int.
- runTest(TEST_13, {'fs': HType.UNKNOWN});
- // TODO(sgjesse): We should actually infer int.
- runTest(TEST_14, {'f': HType.UNKNOWN});
- runTest(TEST_15, {'f': HType.UNKNOWN});
- runTest(TEST_16, {'f': HType.UNKNOWN});
- runTest(TEST_17, {'f': HType.UNKNOWN});
- runTest(TEST_18, {'f1': HType.INTEGER,
- 'f2': HType.STRING,
- 'f3': HType.NON_NULL});
- runTest(TEST_19, {'f1': HType.UNKNOWN,
- 'f2': HType.UNKNOWN,
- 'f3': HType.UNKNOWN});
-}
-
-void main() {
- test();
-}
« no previous file with comments | « tests/compiler/dart2js/call_site_type_inferer_test.dart ('k') | tests/compiler/dart2js/return_type_inferer_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698