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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/lib/interceptors.dart

Issue 11413184: Create specialized versions of getInterceptor. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 library _interceptors; 5 library _interceptors;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 part 'js_array.dart'; 9 part 'js_array.dart';
10 part 'js_number.dart'; 10 part 'js_number.dart';
11 part 'js_string.dart'; 11 part 'js_string.dart';
12 12
13 /** 13 /**
14 * The interceptor class for all non-primitive objects. All its 14 * The interceptor class for all non-primitive objects. All its
15 * members are synthethized by the compiler's emitter. 15 * members are synthethized by the compiler's emitter.
16 */ 16 */
17 class ObjectInterceptor { 17 class ObjectInterceptor {
18 const ObjectInterceptor(); 18 const ObjectInterceptor();
19 } 19 }
20 20
21 /** 21 /**
22 * Get the interceptor for [object]. Called by the compiler when it needs 22 * Get the interceptor for [object]. Called by the compiler when it needs
23 * to emit a call to an intercepted method, that is a method that is 23 * to emit a call to an intercepted method, that is a method that is
24 * defined in an interceptor class. 24 * defined in an interceptor class.
25 */ 25 */
26 getInterceptor(object) { 26 Function getInterceptor;
ahe 2012/11/27 14:29:45 I suggest using this pattern instead: getIntercep
ngeoffray 2012/11/27 15:50:54 Done.
27 if (object is String) return stringInterceptor;
28 if (isJsArray(object)) return arrayInterceptor;
29 if (object is int) return intInterceptor;
30 if (object is double) return doubleInterceptor;
31 if (object is bool) return boolInterceptor;
32 if (object == null) return nullInterceptor;
33 if (JS('String', 'typeof #', object) == 'function') {
34 return functionInterceptor;
35 }
36 return objectInterceptor;
37 }
38
39 final arrayInterceptor = const JSArray();
40 final boolInterceptor = const JSBool();
41 final doubleInterceptor = const JSDouble();
42 final intInterceptor = const JSInt();
43 final functionInterceptor = const JSFunction();
44 final nullInterceptor = const JSNull();
45 final numberInterceptor = const JSNumber();
46 final stringInterceptor = const JSString();
47 final objectInterceptor = const ObjectInterceptor();
48 27
49 /** 28 /**
50 * The interceptor class for tear-off static methods. Unlike 29 * The interceptor class for tear-off static methods. Unlike
51 * tear-off instance methods, tear-off static methods are just the JS 30 * tear-off instance methods, tear-off static methods are just the JS
52 * function, and methods inherited from Object must therefore be 31 * function, and methods inherited from Object must therefore be
53 * intercepted. 32 * intercepted.
54 */ 33 */
55 class JSFunction implements Function { 34 class JSFunction implements Function {
56 const JSFunction(); 35 const JSFunction();
57 String toString() => 'Closure'; 36 String toString() => 'Closure';
(...skipping 15 matching lines...) Expand all
73 52
74 /** 53 /**
75 * The interceptor class for [Null]. 54 * The interceptor class for [Null].
76 */ 55 */
77 class JSNull implements Null { 56 class JSNull implements Null {
78 const JSNull(); 57 const JSNull();
79 String toString() => 'null'; 58 String toString() => 'null';
80 int get hashCode => 0; 59 int get hashCode => 0;
81 Type get runtimeType => createRuntimeType('Null'); 60 Type get runtimeType => createRuntimeType('Null');
82 } 61 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698