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

Side by Side Diff: lib/core/core_patch.dart

Issue 1450393002: Roll sdk dependency to 34357cdad108dcba734949bd13bd28c76ea285e0 (Closed) Base URL: git@github.com:dart-lang/fletch.git@master
Patch Set: Update status files Created 5 years 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 // Copyright (c) 2015, the Fletch project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Fletch 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.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 library dart.core_patch; 5 library dart.core_patch;
6 6
7 import 'dart:fletch._system' as fletch; 7 import 'dart:fletch._system' as fletch;
8 import 'dart:fletch._system' show patch;
9 import 'dart:collection' show LinkedHashMap, UnmodifiableMapView;
8 10
9 part 'bigint.dart'; 11 part 'bigint.dart';
10 part 'case.dart'; 12 part 'case.dart';
11 part 'double.dart'; 13 part 'double.dart';
12 part 'int.dart'; 14 part 'int.dart';
13 part 'regexp.dart'; 15 part 'regexp.dart';
14 part 'string.dart'; 16 part 'string.dart';
15 17
16 const patch = "patch";
17
18 @patch external bool identical(Object a, Object b); 18 @patch external bool identical(Object a, Object b);
19 19
20 @patch int identityHashCode(Object object) { 20 @patch int identityHashCode(Object object) {
21 if (object is int) return object; 21 if (object is int) return object;
22 return _identityHashCode(object); 22 return _identityHashCode(object);
23 } 23 }
24 24
25 @fletch.native external _identityHashCode(Object object); 25 @fletch.native external _identityHashCode(Object object);
26 26
27 @patch class Object { 27 @patch class Object {
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 if (elements is List) { 229 if (elements is List) {
230 for (int i = 0; i < length; i++) { 230 for (int i = 0; i < length; i++) {
231 list[i] = elements[i]; 231 list[i] = elements[i];
232 } 232 }
233 } else { 233 } else {
234 int i = 0; 234 int i = 0;
235 elements.forEach((e) { list[i++] = e; }); 235 elements.forEach((e) { list[i++] = e; });
236 } 236 }
237 return list; 237 return list;
238 } 238 }
239
240 @patch factory List.unmodifiable(Iterable elements) {
241 return new UnmodifiableListView(new List.from(elements));
242 }
243 }
244
245 @patch class Map<K, V> {
246 @patch factory Map() = LinkedHashMap<K, V>;
247
248 @patch factory Map.unmodifiable(Map other) {
249 return new UnmodifiableMapView<K, V>(new Map<K, V>.from(other));
250 }
239 } 251 }
240 252
241 @patch class NoSuchMethodError { 253 @patch class NoSuchMethodError {
242 @patch String toString() { 254 @patch String toString() {
243 return "NoSuchMethodError: '$_memberName'"; 255 return "NoSuchMethodError: '$_memberName'";
244 } 256 }
245 } 257 }
246 258
247 @patch class int { 259 @patch class int {
248 @patch static int parse( 260 @patch static int parse(
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 @patch class Uri { 663 @patch class Uri {
652 @patch static Uri get base { 664 @patch static Uri get base {
653 return new Uri.file(_base()); 665 return new Uri.file(_base());
654 } 666 }
655 667
656 @patch static bool get _isWindows => false; 668 @patch static bool get _isWindows => false;
657 669
658 @fletch.native static String _base() { 670 @fletch.native static String _base() {
659 throw new RangeError("The Uri.base path is too large"); 671 throw new RangeError("The Uri.base path is too large");
660 } 672 }
673
674 /// Encodes all characters in the string [text] except for those
675 /// that appear in [canonicalTable], and returns the escaped string.
676 @patch static String _uriEncode(
677 List<int> canonicalTable,
678 String text,
679 Encoding encoding,
680 bool spaceToPlus) {
681 byteToHex(byte, buffer) {
682 const String hex = '0123456789ABCDEF';
683 buffer.writeCharCode(hex.codeUnitAt(byte >> 4));
684 buffer.writeCharCode(hex.codeUnitAt(byte & 0x0f));
685 }
686
687 // Encode the string into bytes then generate an ASCII only string
688 // by percent encoding selected bytes.
689 StringBuffer result = new StringBuffer();
690 var bytes = encoding.encode(text);
691 for (int i = 0; i < bytes.length; i++) {
692 int byte = bytes[i];
693 if (byte < 128 &&
694 ((canonicalTable[byte >> 4] & (1 << (byte & 0x0f))) != 0)) {
695 result.writeCharCode(byte);
696 } else if (spaceToPlus && byte == _SPACE) {
697 result.writeCharCode(_PLUS);
698 } else {
699 result.writeCharCode(_PERCENT);
700 byteToHex(byte, result);
701 }
702 }
703 return result.toString();
704 }
661 } 705 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698