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

Unified Diff: test/browser/runtime_tests.js

Issue 1969523002: Canonicalize function types (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Address comments Created 4 years, 7 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 | « lib/runtime/dart_sdk.js ('k') | tool/input_sdk/private/ddc_runtime/types.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/browser/runtime_tests.js
diff --git a/test/browser/runtime_tests.js b/test/browser/runtime_tests.js
index 67706b50672c0d189aaff98ecf83befac4227505..d7ab321c301774bdce328e1a12c7b4d6625769fb 100644
--- a/test/browser/runtime_tests.js
+++ b/test/browser/runtime_tests.js
@@ -1052,6 +1052,109 @@ suite('subtyping', function() {
});
+suite('canonicalization', function() {
+ 'use strict';
+ let functionType = dart.functionType;
+ let definiteFunctionType = dart.definiteFunctionType;
+ let typedef = dart.typedef;
+ let generic = dart.generic;
+
+ let Object = core.Object;
+ let String = core.String;
+ let int = core.int;
+ let dynamic = dart.dynamic;
+ let bottom = dart.bottom;
+ let Map = core.Map;
+ let Map$ = core.Map$;
+
+ class A {}
+
+ let AA$ = generic((T, U) => class AA extends core.Object {});
+ let AA = AA$();
+
+ let Func2 = typedef('Func2', () => functionType(dynamic, [dynamic, dynamic]));
+
+ let FuncG$ = generic((T, U) => typedef('FuncG', () => functionType(T, [T, U])))
+ let FuncG = FuncG$();
+
+ test('base types', () => {
+ assert.equal(Object, Object);
+ assert.equal(String, String);
+ assert.equal(dynamic, dynamic);
+ });
+
+ test('class types', () => {
+ assert.equal(A, A);
+ });
+
+ test('generic class types', () => {
+ assert.equal(AA, AA);
+ assert.equal(AA, AA$(dynamic, dynamic));
+ assert.equal(AA$(dynamic, dynamic), AA$(dynamic, dynamic));
+ assert.equal(AA$(AA, Object), AA$(AA, Object));
+ assert.equal(Map, Map);
+ assert.equal(Map$(dynamic, dynamic), Map);
+ assert.equal(Map$(int, Map$(int, int)), Map$(int, Map$(int, int)));
+ });
+
+ test('typedefs', () => {
+ assert.equal(Func2, Func2);
+ assert.equal(FuncG, FuncG$(dynamic, dynamic));
+ assert.equal(FuncG$(dynamic, dynamic), FuncG$(dynamic, dynamic));
+ assert.equal(FuncG$(String, Func2), FuncG$(String, Func2));
+ });
+
+ test('function types', () => {
+ assert.equal(functionType(dynamic, [dynamic, dynamic]),
+ functionType(dynamic, [dynamic, dynamic]))
+
+ assert.notEqual(definiteFunctionType(dynamic, [dynamic, dynamic]),
+ functionType(dynamic, [dynamic, dynamic]))
+
+ assert.equal(functionType(dynamic, [dynamic, dynamic]),
+ functionType(dynamic, [bottom, bottom]))
+
+ assert.equal(functionType(dynamic, [], [dynamic, dynamic]),
+ functionType(dynamic, [], [dynamic, dynamic]))
+
+ assert.notEqual(definiteFunctionType(dynamic, [], [dynamic, dynamic]),
+ functionType(dynamic, [], [dynamic, dynamic]))
+
+ assert.equal(functionType(dynamic, [], [dynamic, dynamic]),
+ functionType(dynamic, [], [bottom, bottom]))
+
+ assert.equal(functionType(dynamic, [], {extra: dynamic}),
+ functionType(dynamic, [], {extra: dynamic}))
+
+ assert.notEqual(definiteFunctionType(dynamic, [], {extra: dynamic}),
+ functionType(dynamic, [], {extra: dynamic}))
+
+ assert.equal(functionType(dynamic, [], {extra: dynamic}),
+ functionType(dynamic, [], {extra: bottom}))
+
+ assert.equal(functionType(int, [int, int]),
+ functionType(int, [int, int]))
+
+ assert.equal(functionType(int, [], [int, int]),
+ functionType(int, [], [int, int]))
+
+ assert.equal(functionType(int, [int, int], {extra: int}),
+ functionType(int, [int, int], {extra: int}))
+
+ assert.equal(functionType(int, [int, int, int, int, int]),
+ functionType(int, [int, int, int, int, int]))
+
+ assert.notEqual(functionType(int, [int, int, int, int, int]),
+ functionType(int, [int, int, int], [int, int]))
+
+ assert.notEqual(functionType(String, [int, int, int, int, int]),
+ functionType(int, [int, int, int, int, int]))
+
+ assert.notEqual(functionType(String, []),
+ functionType(int, []))
+ });
+});
+
suite('primitives', function() {
'use strict';
« no previous file with comments | « lib/runtime/dart_sdk.js ('k') | tool/input_sdk/private/ddc_runtime/types.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698