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

Side by Side Diff: lib/runtime/dart/core.js

Issue 1076883003: Initial support for runtime function types and type checking (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: uncomment code Created 5 years, 8 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
OLDNEW
1 var core; 1 var core;
2 (function(exports) { 2 (function(exports) {
3 'use strict'; 3 'use strict';
4 class Object { 4 class Object {
5 constructor() { 5 constructor() {
6 let name = this.constructor.name; 6 let name = this.constructor.name;
7 let init = this[name]; 7 let init = this[name];
8 let result = void 0; 8 let result = void 0;
9 if (init) 9 if (init)
10 result = init.apply(this, arguments); 10 result = init.apply(this, arguments);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 class Function extends Object { 75 class Function extends Object {
76 static apply(f, positionalArguments, namedArguments) { 76 static apply(f, positionalArguments, namedArguments) {
77 if (namedArguments === void 0) 77 if (namedArguments === void 0)
78 namedArguments = null; 78 namedArguments = null;
79 return _js_helper.Primitives.applyFunction(f, positionalArguments, namedAr guments == null ? null : Function[_toMangledNames](namedArguments)); 79 return _js_helper.Primitives.applyFunction(f, positionalArguments, namedAr guments == null ? null : Function[_toMangledNames](namedArguments));
80 } 80 }
81 static [_toMangledNames](namedArguments) { 81 static [_toMangledNames](namedArguments) {
82 let result = dart.as(dart.map(), Map$(String, dynamic)); 82 let result = dart.as(dart.map(), Map$(String, dynamic));
83 namedArguments.forEach(dart.as((symbol, value) => { 83 namedArguments.forEach(dart.as((symbol, value) => {
84 result.set(_symbolToString(dart.as(symbol, Symbol)), value); 84 result.set(_symbolToString(dart.as(symbol, Symbol)), value);
85 }, dart.throw_("Unimplemented type (Symbol, dynamic) → void"))); 85 }, dart.functionType(dart.void, [Symbol, dynamic])));
86 return result; 86 return result;
87 } 87 }
88 } 88 }
89 let Comparator$ = dart.generic(function(T) { 89 let Comparator$ = dart.generic(function(T) {
90 class Comparator extends Function {} 90 let Comparator = dart.typedef('Comparator', () => dart.functionType(int, [T, T]));
91 return Comparator; 91 return Comparator;
92 }); 92 });
93 let Comparator = Comparator$(); 93 let Comparator = Comparator$();
94 let Comparable$ = dart.generic(function(T) { 94 let Comparable$ = dart.generic(function(T) {
95 class Comparable extends Object { 95 class Comparable extends Object {
96 static compare(a, b) { 96 static compare(a, b) {
97 return a.compareTo(b); 97 return a.compareTo(b);
98 } 98 }
99 } 99 }
100 return Comparable; 100 return Comparable;
(...skipping 1010 matching lines...) Expand 10 before | Expand all | Expand 10 after
1111 return {done: done, current: done ? void 0 : iterator.current}; 1111 return {done: done, current: done ? void 0 : iterator.current};
1112 } 1112 }
1113 }; 1113 };
1114 } 1114 }
1115 } 1115 }
1116 dart.defineNamedConstructor(Iterable, 'generate'); 1116 dart.defineNamedConstructor(Iterable, 'generate');
1117 return Iterable; 1117 return Iterable;
1118 }); 1118 });
1119 let Iterable = Iterable$(); 1119 let Iterable = Iterable$();
1120 let _Generator$ = dart.generic(function(E) { 1120 let _Generator$ = dart.generic(function(E) {
1121 class _Generator extends Function {} 1121 let _Generator = dart.typedef('_Generator', () => dart.functionType(E, [int] ));
1122 return _Generator; 1122 return _Generator;
1123 }); 1123 });
1124 let _Generator = _Generator$(); 1124 let _Generator = _Generator$();
1125 let _end = dart.JsSymbol('_end'); 1125 let _end = dart.JsSymbol('_end');
1126 let _start = dart.JsSymbol('_start'); 1126 let _start = dart.JsSymbol('_start');
1127 let _generator = dart.JsSymbol('_generator'); 1127 let _generator = dart.JsSymbol('_generator');
1128 let _id = dart.JsSymbol('_id'); 1128 let _id = dart.JsSymbol('_id');
1129 let $iterator = dart.JsSymbol('$iterator'); 1129 let $iterator = dart.JsSymbol('$iterator');
1130 let $length = dart.JsSymbol('$length'); 1130 let $length = dart.JsSymbol('$length');
1131 let $skip = dart.JsSymbol('$skip'); 1131 let $skip = dart.JsSymbol('$skip');
(...skipping 925 matching lines...) Expand 10 before | Expand all | Expand 10 after
2057 } 2057 }
2058 static [_checkNonWindowsPathReservedCharacters](segments, argumentError) { 2058 static [_checkNonWindowsPathReservedCharacters](segments, argumentError) {
2059 segments[exports.$forEach](dart.as((segment) => { 2059 segments[exports.$forEach](dart.as((segment) => {
2060 if (dart.dinvoke(segment, 'contains', "/")) { 2060 if (dart.dinvoke(segment, 'contains', "/")) {
2061 if (argumentError) { 2061 if (argumentError) {
2062 throw new ArgumentError(`Illegal path character ${segment}`); 2062 throw new ArgumentError(`Illegal path character ${segment}`);
2063 } else { 2063 } else {
2064 throw new UnsupportedError(`Illegal path character ${segment}`); 2064 throw new UnsupportedError(`Illegal path character ${segment}`);
2065 } 2065 }
2066 } 2066 }
2067 }, dart.throw_("Unimplemented type (String) → void"))); 2067 }, dart.functionType(dart.void, [String])));
2068 } 2068 }
2069 static [_checkWindowsPathReservedCharacters](segments, argumentError, firstS egment) { 2069 static [_checkWindowsPathReservedCharacters](segments, argumentError, firstS egment) {
2070 if (firstSegment === void 0) 2070 if (firstSegment === void 0)
2071 firstSegment = 0; 2071 firstSegment = 0;
2072 segments[exports.$skip](firstSegment)[exports.$forEach](dart.as((segment) => { 2072 segments[exports.$skip](firstSegment)[exports.$forEach](dart.as((segment) => {
2073 if (dart.dinvoke(segment, 'contains', new RegExp('["*/:<>?\\\\|]'))) { 2073 if (dart.dinvoke(segment, 'contains', new RegExp('["*/:<>?\\\\|]'))) {
2074 if (argumentError) { 2074 if (argumentError) {
2075 throw new ArgumentError("Illegal character in path"); 2075 throw new ArgumentError("Illegal character in path");
2076 } else { 2076 } else {
2077 throw new UnsupportedError("Illegal character in path"); 2077 throw new UnsupportedError("Illegal character in path");
2078 } 2078 }
2079 } 2079 }
2080 }, dart.throw_("Unimplemented type (String) → void"))); 2080 }, dart.functionType(dart.void, [String])));
2081 } 2081 }
2082 static [_checkWindowsDriveLetter](charCode, argumentError) { 2082 static [_checkWindowsDriveLetter](charCode, argumentError) {
2083 if (dart.notNull(Uri[_UPPER_CASE_A]) <= dart.notNull(charCode) && dart.not Null(charCode) <= dart.notNull(Uri[_UPPER_CASE_Z]) || dart.notNull(Uri[_LOWER_CA SE_A]) <= dart.notNull(charCode) && dart.notNull(charCode) <= dart.notNull(Uri[_ LOWER_CASE_Z])) { 2083 if (dart.notNull(Uri[_UPPER_CASE_A]) <= dart.notNull(charCode) && dart.not Null(charCode) <= dart.notNull(Uri[_UPPER_CASE_Z]) || dart.notNull(Uri[_LOWER_CA SE_A]) <= dart.notNull(charCode) && dart.notNull(charCode) <= dart.notNull(Uri[_ LOWER_CASE_Z])) {
2084 return; 2084 return;
2085 } 2085 }
2086 if (argumentError) { 2086 if (argumentError) {
2087 throw new ArgumentError(String['+']("Illegal drive letter ", new String. fromCharCode(charCode))); 2087 throw new ArgumentError(String['+']("Illegal drive letter ", new String. fromCharCode(charCode)));
2088 } else { 2088 } else {
2089 throw new UnsupportedError(String['+']("Illegal drive letter ", new Stri ng.fromCharCode(charCode))); 2089 throw new UnsupportedError(String['+']("Illegal drive letter ", new Stri ng.fromCharCode(charCode)));
2090 } 2090 }
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
2344 static [_makePath](path, start, end, pathSegments, ensureLeadingSlash, isFil e) { 2344 static [_makePath](path, start, end, pathSegments, ensureLeadingSlash, isFil e) {
2345 if (dart.notNull(path == null) && dart.notNull(pathSegments == null)) 2345 if (dart.notNull(path == null) && dart.notNull(pathSegments == null))
2346 return isFile ? "/" : ""; 2346 return isFile ? "/" : "";
2347 if (dart.notNull(path != null) && dart.notNull(pathSegments != null)) { 2347 if (dart.notNull(path != null) && dart.notNull(pathSegments != null)) {
2348 throw new ArgumentError('Both path and pathSegments specified'); 2348 throw new ArgumentError('Both path and pathSegments specified');
2349 } 2349 }
2350 let result = null; 2350 let result = null;
2351 if (path != null) { 2351 if (path != null) {
2352 result = Uri[_normalize](path, start, end, dart.as(Uri[_pathCharOrSlashT able], List$(int))); 2352 result = Uri[_normalize](path, start, end, dart.as(Uri[_pathCharOrSlashT able], List$(int)));
2353 } else { 2353 } else {
2354 result = pathSegments[exports.$map](dart.as((s) => Uri[_uriEncode](dart. as(Uri[_pathCharTable], List$(int)), dart.as(s, String)), dart.throw_("Unimpleme nted type (String) → dynamic")))[exports.$join]("/"); 2354 result = pathSegments[exports.$map](dart.as((s) => Uri[_uriEncode](dart. as(Uri[_pathCharTable], List$(int)), dart.as(s, String)), dart.functionType(dyna mic, [String])))[exports.$join]("/");
2355 } 2355 }
2356 if (dart.dload(result, 'isEmpty')) { 2356 if (dart.dload(result, 'isEmpty')) {
2357 if (isFile) 2357 if (isFile)
2358 return "/"; 2358 return "/";
2359 } else if ((dart.notNull(isFile) || dart.notNull(ensureLeadingSlash)) && d art.notNull(!dart.equals(dart.dinvoke(result, 'codeUnitAt', 0), Uri[_SLASH]))) { 2359 } else if ((dart.notNull(isFile) || dart.notNull(ensureLeadingSlash)) && d art.notNull(!dart.equals(dart.dinvoke(result, 'codeUnitAt', 0), Uri[_SLASH]))) {
2360 return `/${result}`; 2360 return `/${result}`;
2361 } 2361 }
2362 return dart.as(result, String); 2362 return dart.as(result, String);
2363 } 2363 }
2364 static [_makeQuery](query, start, end, queryParameters) { 2364 static [_makeQuery](query, start, end, queryParameters) {
2365 if (dart.notNull(query == null) && dart.notNull(queryParameters == null)) 2365 if (dart.notNull(query == null) && dart.notNull(queryParameters == null))
2366 return null; 2366 return null;
2367 if (dart.notNull(query != null) && dart.notNull(queryParameters != null)) { 2367 if (dart.notNull(query != null) && dart.notNull(queryParameters != null)) {
2368 throw new ArgumentError('Both query and queryParameters specified'); 2368 throw new ArgumentError('Both query and queryParameters specified');
2369 } 2369 }
2370 if (query != null) 2370 if (query != null)
2371 return Uri[_normalize](query, start, end, dart.as(Uri[_queryCharTable], List$(int))); 2371 return Uri[_normalize](query, start, end, dart.as(Uri[_queryCharTable], List$(int)));
2372 let result = new StringBuffer(); 2372 let result = new StringBuffer();
2373 let first = true; 2373 let first = true;
2374 queryParameters.forEach(dart.as((key, value) => { 2374 queryParameters.forEach(dart.as((key, value) => {
2375 if (!dart.notNull(first)) { 2375 if (!dart.notNull(first)) {
2376 result.write("&"); 2376 result.write("&");
2377 } 2377 }
2378 first = false; 2378 first = false;
2379 result.write(Uri.encodeQueryComponent(dart.as(key, String))); 2379 result.write(Uri.encodeQueryComponent(dart.as(key, String)));
2380 if (dart.notNull(value != null) && dart.notNull(dart.dunary('!', dart.dl oad(value, 'isEmpty')))) { 2380 if (dart.notNull(value != null) && dart.notNull(dart.dunary('!', dart.dl oad(value, 'isEmpty')))) {
2381 result.write("="); 2381 result.write("=");
2382 result.write(Uri.encodeQueryComponent(dart.as(value, String))); 2382 result.write(Uri.encodeQueryComponent(dart.as(value, String)));
2383 } 2383 }
2384 }, dart.throw_("Unimplemented type (String, String) → void"))); 2384 }, dart.functionType(dart.void, [String, String])));
2385 return result.toString(); 2385 return result.toString();
2386 } 2386 }
2387 static [_makeFragment](fragment, start, end) { 2387 static [_makeFragment](fragment, start, end) {
2388 if (fragment == null) 2388 if (fragment == null)
2389 return null; 2389 return null;
2390 return Uri[_normalize](fragment, start, end, dart.as(Uri[_queryCharTable], List$(int))); 2390 return Uri[_normalize](fragment, start, end, dart.as(Uri[_queryCharTable], List$(int)));
2391 } 2391 }
2392 static [_stringOrNullLength](s) { 2392 static [_stringOrNullLength](s) {
2393 return s == null ? 0 : s.length; 2393 return s == null ? 0 : s.length;
2394 } 2394 }
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
2785 if (index == -1) { 2785 if (index == -1) {
2786 if (!dart.equals(element, "")) { 2786 if (!dart.equals(element, "")) {
2787 dart.dsetindex(map, Uri.decodeQueryComponent(dart.as(element, String ), {encoding: encoding}), ""); 2787 dart.dsetindex(map, Uri.decodeQueryComponent(dart.as(element, String ), {encoding: encoding}), "");
2788 } 2788 }
2789 } else if (index != 0) { 2789 } else if (index != 0) {
2790 let key = dart.dinvoke(element, 'substring', 0, index); 2790 let key = dart.dinvoke(element, 'substring', 0, index);
2791 let value = dart.dinvoke(element, 'substring', dart.notNull(index) + 1 ); 2791 let value = dart.dinvoke(element, 'substring', dart.notNull(index) + 1 );
2792 dart.dsetindex(map, Uri.decodeQueryComponent(dart.as(key, String), {en coding: encoding}), Uri.decodeQueryComponent(dart.as(value, String), {encoding: encoding})); 2792 dart.dsetindex(map, Uri.decodeQueryComponent(dart.as(key, String), {en coding: encoding}), Uri.decodeQueryComponent(dart.as(value, String), {encoding: encoding}));
2793 } 2793 }
2794 return map; 2794 return map;
2795 }, dart.throw_("Unimplemented type (dynamic, String) → dynamic"))), Map$(S tring, String)); 2795 }, dart.functionType(dynamic, [dynamic, String]))), Map$(String, String));
2796 } 2796 }
2797 static parseIPv4Address(host) { 2797 static parseIPv4Address(host) {
2798 // Function error: (String) → void 2798 // Function error: (String) → void
2799 function error(msg) { 2799 function error(msg) {
2800 throw new FormatException(`Illegal IPv4 address, ${msg}`); 2800 throw new FormatException(`Illegal IPv4 address, ${msg}`);
2801 } 2801 }
2802 let bytes = host.split('.'); 2802 let bytes = host.split('.');
2803 if (bytes[exports.$length] != 4) { 2803 if (bytes[exports.$length] != 4) {
2804 error('IPv4 address should contain exactly 4 parts'); 2804 error('IPv4 address should contain exactly 4 parts');
2805 } 2805 }
2806 return dart.as(bytes[exports.$map](dart.as((byteString) => { 2806 return dart.as(bytes[exports.$map](dart.as((byteString) => {
2807 let byte = int.parse(dart.as(byteString, String)); 2807 let byte = int.parse(dart.as(byteString, String));
2808 if (dart.notNull(byte) < 0 || dart.notNull(byte) > 255) { 2808 if (dart.notNull(byte) < 0 || dart.notNull(byte) > 255) {
2809 error('each part must be in the range of `0..255`'); 2809 error('each part must be in the range of `0..255`');
2810 } 2810 }
2811 return byte; 2811 return byte;
2812 }, dart.throw_("Unimplemented type (String) → dynamic")))[exports.$toList] (), List$(int)); 2812 }, dart.functionType(dynamic, [String])))[exports.$toList](), List$(int));
2813 } 2813 }
2814 static parseIPv6Address(host, start, end) { 2814 static parseIPv6Address(host, start, end) {
2815 if (start === void 0) 2815 if (start === void 0)
2816 start = 0; 2816 start = 0;
2817 if (end === void 0) 2817 if (end === void 0)
2818 end = null; 2818 end = null;
2819 if (end == null) 2819 if (end == null)
2820 end = host.length; 2820 end = host.length;
2821 // Function error: (String, [dynamic]) → void 2821 // Function error: (String, [dynamic]) → void
2822 function error(msg, position) { 2822 function error(msg, position) {
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
3122 exports.Stopwatch = Stopwatch; 3122 exports.Stopwatch = Stopwatch;
3123 exports.String = String; 3123 exports.String = String;
3124 exports.$last = $last; 3124 exports.$last = $last;
3125 exports.RuneIterator = RuneIterator; 3125 exports.RuneIterator = RuneIterator;
3126 exports.StringBuffer = StringBuffer; 3126 exports.StringBuffer = StringBuffer;
3127 exports.StringSink = StringSink; 3127 exports.StringSink = StringSink;
3128 exports.Symbol = Symbol; 3128 exports.Symbol = Symbol;
3129 exports.Type = Type; 3129 exports.Type = Type;
3130 exports.Uri = Uri; 3130 exports.Uri = Uri;
3131 })(core || (core = {})); 3131 })(core || (core = {}));
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698