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

Side by Side Diff: lib/runtime/_types.js

Issue 1252953003: Implement more of dart:mirrors (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Address comments Created 5 years, 4 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 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 /* This library defines the representation of runtime types. 5 /* This library defines the representation of runtime types.
6 */ 6 */
7 7
8 dart_library.library('dart_runtime/_types', null, /* Imports */[ 8 dart_library.library('dart_runtime/_types', null, /* Imports */[
9 ], /* Lazy Imports */[ 9 ], /* Lazy Imports */[
10 'dart/core', 10 'dart/core',
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 * TODO(leafp): Figure out how to present this to the user. How 132 * TODO(leafp): Figure out how to present this to the user. How
133 * should these be printed out? 133 * should these be printed out?
134 */ 134 */
135 constructor(definite, returnType, args, optionals, named) { 135 constructor(definite, returnType, args, optionals, named) {
136 super(); 136 super();
137 this.definite = definite; 137 this.definite = definite;
138 this.returnType = returnType; 138 this.returnType = returnType;
139 this.args = args; 139 this.args = args;
140 this.optionals = optionals; 140 this.optionals = optionals;
141 this.named = named; 141 this.named = named;
142
143 // TODO(vsm): This is just parameter metadata for now.
144 this.metadata = [];
145 function process(array, metadata) {
146 var result = [];
147 for (var i = 0; i < array.length; ++i) {
148 var arg = array[i];
149 if (arg instanceof Array) {
150 metadata.push(arg.slice(1));
151 result.push(arg[0]);
152 } else {
153 metadata.push([]);
154 result.push(arg);
155 }
156 }
157 return result;
158 }
159 this.args = process(this.args, this.metadata);
160 this.optionals = process(this.optionals, this.metadata);
161 // TODO(vsm): Add named arguments.
142 this._canonize(); 162 this._canonize();
143 } 163 }
144 _canonize() { 164 _canonize() {
145 if (this.definite) return; 165 if (this.definite) return;
146 166
147 function replace(a) { 167 function replace(a) {
148 return (a == dynamicR) ? bottomR : a; 168 return (a == dynamicR) ? bottomR : a;
149 } 169 }
150 170
151 this.args = this.args.map(replace); 171 this.args = this.args.map(replace);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 return this.functionType.args; 215 return this.functionType.args;
196 } 216 }
197 217
198 get optionals() { 218 get optionals() {
199 return this.functionType.optionals; 219 return this.functionType.optionals;
200 } 220 }
201 221
202 get named() { 222 get named() {
203 return this.functionType.named; 223 return this.functionType.named;
204 } 224 }
225
226 get metadata() {
227 return this.functionType.metadata;
228 }
205 } 229 }
206 230
207 function _functionType(definite, returnType, args, extra) { 231 function _functionType(definite, returnType, args, extra) {
208 // TODO(vsm): Cache / memomize? 232 // TODO(vsm): Cache / memomize?
209 let optionals; 233 let optionals;
210 let named; 234 let named;
211 if (extra === void 0) { 235 if (extra === void 0) {
212 optionals = []; 236 optionals = [];
213 named = {}; 237 named = {};
214 } else if (extra instanceof Array) { 238 } else if (extra instanceof Array) {
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 let typeArgs = classes.getGenericArgs(type); 533 let typeArgs = classes.getGenericArgs(type);
510 if (!typeArgs) return true; 534 if (!typeArgs) return true;
511 for (let t of typeArgs) { 535 for (let t of typeArgs) {
512 if (t != core.Object && t != dynamicR) return false; 536 if (t != core.Object && t != dynamicR) return false;
513 } 537 }
514 return true; 538 return true;
515 } 539 }
516 exports.isGroundType = isGroundType; 540 exports.isGroundType = isGroundType;
517 541
518 }); 542 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698