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

Side by Side Diff: tests/compiler/dart2js/mirrors_test.dart

Issue 11726005: Dartdoc comments retrieved as metadata through dart2js mirrors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 7 years, 11 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 | 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 import '../../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors.dart' ; 5 import '../../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors.dart' ;
6 import '../../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors_util. dart'; 6 import '../../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors_util. dart';
7 7
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 int count(Iterable iterable) { 10 int count(Iterable iterable) {
(...skipping 20 matching lines...) Expand all
31 } 31 }
32 } 32 }
33 return null; 33 return null;
34 } 34 }
35 35
36 main() { 36 main() {
37 var scriptPath = new Path.fromNative(new Options().script); 37 var scriptPath = new Path.fromNative(new Options().script);
38 var dirPath = scriptPath.directoryPath; 38 var dirPath = scriptPath.directoryPath;
39 var libPath = dirPath.join(new Path.fromNative('../../../sdk/')); 39 var libPath = dirPath.join(new Path.fromNative('../../../sdk/'));
40 var inputPath = dirPath.join(new Path.fromNative('mirrors_helper.dart')); 40 var inputPath = dirPath.join(new Path.fromNative('mirrors_helper.dart'));
41 var compilation = new Compilation.library([inputPath], libPath); 41 var compilation = new Compilation.library([inputPath], libPath, null,
42 <String>['--preserve-comments']);
42 Expect.isNotNull(compilation, "No compilation created"); 43 Expect.isNotNull(compilation, "No compilation created");
43 44
44 var mirrors = compilation.mirrors; 45 var mirrors = compilation.mirrors;
45 Expect.isNotNull(mirrors, "No mirror system returned from compilation"); 46 Expect.isNotNull(mirrors, "No mirror system returned from compilation");
46 47
47 var libraries = mirrors.libraries; 48 var libraries = mirrors.libraries;
48 Expect.isNotNull(libraries, "No libraries map returned"); 49 Expect.isNotNull(libraries, "No libraries map returned");
49 Expect.isFalse(libraries.isEmpty, "Empty libraries map returned"); 50 Expect.isFalse(libraries.isEmpty, "Empty libraries map returned");
50 51
51 var helperLibrary = libraries["mirrors_helper"]; 52 var helperLibrary = libraries["mirrors_helper"];
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 Expect.isNotNull(fooClass.functions); 163 Expect.isNotNull(fooClass.functions);
163 Expect.isNotNull(fooClass.members); 164 Expect.isNotNull(fooClass.members);
164 Expect.isNotNull(fooClass.getters); 165 Expect.isNotNull(fooClass.getters);
165 Expect.isNotNull(fooClass.setters); 166 Expect.isNotNull(fooClass.setters);
166 Expect.isNotNull(fooClass.variables); 167 Expect.isNotNull(fooClass.variables);
167 168
168 ////////////////////////////////////////////////////////////////////////////// 169 //////////////////////////////////////////////////////////////////////////////
169 // Metadata tests 170 // Metadata tests
170 ////////////////////////////////////////////////////////////////////////////// 171 //////////////////////////////////////////////////////////////////////////////
171 172
172 var metadata = fooClass.metadata; 173 var metadataList = fooClass.metadata;
173 Expect.isNotNull(metadata); 174 Expect.isNotNull(metadataList);
174 Expect.equals(10, metadata.length); 175 Expect.equals(16, metadataList.length);
176 var metadataListIndex = 0;
177 var metadata;
175 178
176 // @Metadata // This is intentionally the type literal. 179 var dartMirrorsLibrary = system.libraries['dart.mirrors'];
177 var metadata0 = metadata[0]; 180 Expect.isNotNull(dartMirrorsLibrary);
178 Expect.isTrue(metadata0 is InstanceMirror); 181 var commentType = dartMirrorsLibrary.classes['Comment'];
179 Expect.isFalse(metadata0.hasReflectee); 182 Expect.isNotNull(commentType);
180 Expect.throws(() => metadata0.reflectee, (_) => true); 183
181 Expect.isTrue(metadata0 is TypeInstanceMirror); 184 // /// Singleline doc comment.
182 var metadataType = metadata0.representedType; 185 metadata = metadataList[metadataListIndex++];
186 Expect.isTrue(metadata is InstanceMirror);
187 Expect.isFalse(metadata.hasReflectee);
188 Expect.throws(() => metadata.reflectee, (_) => true);
189 Expect.isTrue(metadata is CommentInstanceMirror);
190 Expect.equals(commentType.originalDeclaration, metadata.type);
191 Expect.isTrue(metadata.isDocComment);
192 Expect.stringEquals(
193 "/// Singleline doc comment.", metadata.text);
194 Expect.stringEquals(
195 "Singleline doc comment.", metadata.trimmedText);
196
197 // @Metadata
198 metadata = metadataList[metadataListIndex++];
199 Expect.isTrue(metadata is InstanceMirror);
200 Expect.isFalse(metadata.hasReflectee);
201 Expect.throws(() => metadata.reflectee, (_) => true);
202 Expect.isTrue(metadata is TypeInstanceMirror);
203 var metadataType = metadata.representedType;
183 Expect.isNotNull(metadataType); 204 Expect.isNotNull(metadataType);
184 Expect.stringEquals('Metadata', metadataType.simpleName); 205 Expect.stringEquals('Metadata', metadataType.simpleName);
185 206
207 // // This is intentionally the type literal.
208 metadata = metadataList[metadataListIndex++];
209 Expect.isTrue(metadata is InstanceMirror);
210 Expect.isFalse(metadata.hasReflectee);
211 Expect.throws(() => metadata.reflectee, (_) => true);
212 Expect.isTrue(metadata is CommentInstanceMirror);
213 Expect.equals(commentType.originalDeclaration, metadata.type);
214 Expect.isFalse(metadata.isDocComment);
215 Expect.stringEquals(
216 "// This is intentionally the type literal.", metadata.text);
217 Expect.stringEquals(
218 "This is intentionally the type literal.", metadata.trimmedText);
219
220 // Singleline comment 1.
221 metadata = metadataList[metadataListIndex++];
222 Expect.isTrue(metadata is InstanceMirror);
223 Expect.isFalse(metadata.hasReflectee);
224 Expect.throws(() => metadata.reflectee, (_) => true);
225 Expect.isTrue(metadata is CommentInstanceMirror);
226 Expect.equals(commentType.originalDeclaration, metadata.type);
227 Expect.isFalse(metadata.isDocComment);
228 Expect.stringEquals(
229 "// Singleline comment 1.", metadata.text);
230 Expect.stringEquals(
231 "Singleline comment 1.", metadata.trimmedText);
232
233 // Singleline comment 2.
234 metadata = metadataList[metadataListIndex++];
235 Expect.isTrue(metadata is InstanceMirror);
236 Expect.isFalse(metadata.hasReflectee);
237 Expect.throws(() => metadata.reflectee, (_) => true);
238 Expect.isTrue(metadata is CommentInstanceMirror);
239 Expect.equals(commentType.originalDeclaration, metadata.type);
240 Expect.isFalse(metadata.isDocComment);
241 Expect.stringEquals(
242 "// Singleline comment 2.", metadata.text);
243 Expect.stringEquals(
244 "Singleline comment 2.", metadata.trimmedText);
245
186 // @Metadata(null) 246 // @Metadata(null)
187 var metadata1 = metadata[1]; 247 metadata = metadataList[metadataListIndex++];
188 Expect.isTrue(metadata1 is InstanceMirror); 248 Expect.isTrue(metadata is InstanceMirror);
189 Expect.isFalse(metadata1.hasReflectee); 249 Expect.isFalse(metadata.hasReflectee);
190 Expect.throws(() => metadata1.reflectee, (_) => true); 250 Expect.throws(() => metadata.reflectee, (_) => true);
191 Expect.equals(metadataType.originalDeclaration, metadata1.type); 251 Expect.equals(metadataType.originalDeclaration, metadata.type);
192 metadata1.getField('data').then((InstanceMirror data) { 252 metadata.getField('data').then((InstanceMirror data) {
193 Expect.isNotNull(data); 253 Expect.isNotNull(data);
194 Expect.isTrue(data.hasReflectee); 254 Expect.isTrue(data.hasReflectee);
195 Expect.isNull(data.reflectee); 255 Expect.isNull(data.reflectee);
196 }); 256 });
197 257
198 // @Metadata(true) 258 // @Metadata(true)
199 var metadata2 = metadata[2]; 259 metadata = metadataList[metadataListIndex++];
200 Expect.isTrue(metadata2 is InstanceMirror); 260 Expect.isTrue(metadata is InstanceMirror);
201 Expect.isFalse(metadata2.hasReflectee); 261 Expect.isFalse(metadata.hasReflectee);
202 Expect.throws(() => metadata2.reflectee, (_) => true); 262 Expect.throws(() => metadata.reflectee, (_) => true);
203 Expect.equals(metadataType.originalDeclaration, metadata2.type); 263 Expect.equals(metadataType.originalDeclaration, metadata.type);
204 metadata2.getField('data').then((InstanceMirror data) { 264 metadata.getField('data').then((InstanceMirror data) {
205 Expect.isNotNull(data); 265 Expect.isNotNull(data);
206 Expect.isTrue(data.hasReflectee); 266 Expect.isTrue(data.hasReflectee);
207 Expect.isTrue(data.reflectee); 267 Expect.isTrue(data.reflectee);
208 }); 268 });
209 269
210 // @Metadata(false) 270 // @Metadata(false)
211 var metadata3 = metadata[3]; 271 metadata = metadataList[metadataListIndex++];
212 Expect.isTrue(metadata3 is InstanceMirror); 272 Expect.isTrue(metadata is InstanceMirror);
213 Expect.isFalse(metadata3.hasReflectee); 273 Expect.isFalse(metadata.hasReflectee);
214 Expect.throws(() => metadata3.reflectee, (_) => true); 274 Expect.throws(() => metadata.reflectee, (_) => true);
215 Expect.equals(metadataType.originalDeclaration, metadata3.type); 275 Expect.equals(metadataType.originalDeclaration, metadata.type);
216 metadata3.getField('data').then((InstanceMirror data) { 276 metadata.getField('data').then((InstanceMirror data) {
217 Expect.isNotNull(data); 277 Expect.isNotNull(data);
218 Expect.isTrue(data.hasReflectee); 278 Expect.isTrue(data.hasReflectee);
219 Expect.isFalse(data.reflectee); 279 Expect.isFalse(data.reflectee);
220 }); 280 });
221 281
222 // @Metadata(0) 282 // @Metadata(0)
223 var metadata4 = metadata[4]; 283 metadata = metadataList[metadataListIndex++];
224 Expect.isTrue(metadata4 is InstanceMirror); 284 Expect.isTrue(metadata is InstanceMirror);
225 Expect.isFalse(metadata4.hasReflectee); 285 Expect.isFalse(metadata.hasReflectee);
226 Expect.throws(() => metadata4.reflectee, (_) => true); 286 Expect.throws(() => metadata.reflectee, (_) => true);
227 Expect.equals(metadataType.originalDeclaration, metadata4.type); 287 Expect.equals(metadataType.originalDeclaration, metadata.type);
228 metadata4.getField('data').then((InstanceMirror data) { 288 metadata.getField('data').then((InstanceMirror data) {
229 Expect.isNotNull(data); 289 Expect.isNotNull(data);
230 Expect.isTrue(data.hasReflectee); 290 Expect.isTrue(data.hasReflectee);
231 Expect.equals(0, data.reflectee); 291 Expect.equals(0, data.reflectee);
232 }); 292 });
233 293
234 // @Metadata(1.5) 294 // @Metadata(1.5)
235 var metadata5 = metadata[5]; 295 metadata = metadataList[metadataListIndex++];
236 Expect.isTrue(metadata5 is InstanceMirror); 296 Expect.isTrue(metadata is InstanceMirror);
237 Expect.isFalse(metadata5.hasReflectee); 297 Expect.isFalse(metadata.hasReflectee);
238 Expect.throws(() => metadata5.reflectee, (_) => true); 298 Expect.throws(() => metadata.reflectee, (_) => true);
239 Expect.equals(metadataType.originalDeclaration, metadata5.type); 299 Expect.equals(metadataType.originalDeclaration, metadata.type);
240 metadata5.getField('data').then((InstanceMirror data) { 300 metadata.getField('data').then((InstanceMirror data) {
241 Expect.isNotNull(data); 301 Expect.isNotNull(data);
242 Expect.isTrue(data.hasReflectee); 302 Expect.isTrue(data.hasReflectee);
243 Expect.equals(1.5, data.reflectee); 303 Expect.equals(1.5, data.reflectee);
244 }); 304 });
245 305
246 // @Metadata("Foo") 306 // @Metadata("Foo")
247 var metadata6 = metadata[6]; 307 metadata = metadataList[metadataListIndex++];
248 Expect.isTrue(metadata6 is InstanceMirror); 308 Expect.isTrue(metadata is InstanceMirror);
249 Expect.isFalse(metadata6.hasReflectee); 309 Expect.isFalse(metadata.hasReflectee);
250 Expect.throws(() => metadata6.reflectee, (_) => true); 310 Expect.throws(() => metadata.reflectee, (_) => true);
251 Expect.equals(metadataType.originalDeclaration, metadata6.type); 311 Expect.equals(metadataType.originalDeclaration, metadata.type);
252 metadata6.getField('data').then((InstanceMirror data) { 312 metadata.getField('data').then((InstanceMirror data) {
253 Expect.isNotNull(data); 313 Expect.isNotNull(data);
254 Expect.isTrue(data.hasReflectee); 314 Expect.isTrue(data.hasReflectee);
255 Expect.stringEquals("Foo", data.reflectee); 315 Expect.stringEquals("Foo", data.reflectee);
256 }); 316 });
257 317
258 // @Metadata(const ["Foo"]) 318 // @Metadata(const ["Foo"])
259 var metadata7 = metadata[7]; 319 metadata = metadataList[metadataListIndex++];
260 Expect.isTrue(metadata7 is InstanceMirror); 320 Expect.isTrue(metadata is InstanceMirror);
261 Expect.isFalse(metadata7.hasReflectee); 321 Expect.isFalse(metadata.hasReflectee);
262 Expect.throws(() => metadata7.reflectee, (_) => true); 322 Expect.throws(() => metadata.reflectee, (_) => true);
263 Expect.equals(metadataType.originalDeclaration, metadata7.type); 323 Expect.equals(metadataType.originalDeclaration, metadata.type);
264 metadata7.getField('data').then((InstanceMirror data) { 324 metadata.getField('data').then((InstanceMirror data) {
265 Expect.isTrue(data is ListInstanceMirror); 325 Expect.isTrue(data is ListInstanceMirror);
266 Expect.isFalse(data.hasReflectee); 326 Expect.isFalse(data.hasReflectee);
267 Expect.throws(() => data.reflectee, (_) => true); 327 Expect.throws(() => data.reflectee, (_) => true);
268 ListInstanceMirror listData = data; 328 ListInstanceMirror listData = data;
269 Expect.equals(1, listData.length); 329 Expect.equals(1, listData.length);
270 listData[0].then((InstanceMirror element) { 330 listData[0].then((InstanceMirror element) {
271 Expect.isNotNull(element); 331 Expect.isNotNull(element);
272 Expect.isTrue(element.hasReflectee); 332 Expect.isTrue(element.hasReflectee);
273 Expect.stringEquals("Foo", element.reflectee); 333 Expect.stringEquals("Foo", element.reflectee);
274 }); 334 });
275 }); 335 });
276 336
277 // @Metadata(const {'foo':"Foo"}) 337 // @Metadata(/* Inline comment */ const {'foo':"Foo"})
278 var metadata8 = metadata[8]; 338 metadata = metadataList[metadataListIndex++];
279 Expect.isTrue(metadata8 is InstanceMirror); 339 Expect.isTrue(metadata is InstanceMirror);
280 Expect.isFalse(metadata8.hasReflectee); 340 Expect.isFalse(metadata.hasReflectee);
281 Expect.throws(() => metadata8.reflectee, (_) => true); 341 Expect.throws(() => metadata.reflectee, (_) => true);
282 Expect.equals(metadataType.originalDeclaration, metadata8.type); 342 Expect.equals(metadataType.originalDeclaration, metadata.type);
283 metadata8.getField('data').then((InstanceMirror data) { 343 metadata.getField('data').then((InstanceMirror data) {
284 Expect.isTrue(data is MapInstanceMirror); 344 Expect.isTrue(data is MapInstanceMirror);
285 Expect.isFalse(data.hasReflectee); 345 Expect.isFalse(data.hasReflectee);
286 Expect.throws(() => data.reflectee, (_) => true); 346 Expect.throws(() => data.reflectee, (_) => true);
287 MapInstanceMirror mapData = data; 347 MapInstanceMirror mapData = data;
288 Expect.equals(1, mapData.length); 348 Expect.equals(1, mapData.length);
289 var it = mapData.keys.iterator; 349 var it = mapData.keys.iterator;
290 Expect.isTrue(it.moveNext()); 350 Expect.isTrue(it.moveNext());
291 Expect.stringEquals('foo', it.current); 351 Expect.stringEquals('foo', it.current);
292 mapData['foo'].then((InstanceMirror element) { 352 mapData['foo'].then((InstanceMirror element) {
293 Expect.isNotNull(element); 353 Expect.isNotNull(element);
294 Expect.isTrue(element.hasReflectee); 354 Expect.isTrue(element.hasReflectee);
295 Expect.stringEquals("Foo", element.reflectee); 355 Expect.stringEquals("Foo", element.reflectee);
296 }); 356 });
297 Expect.isNull(mapData['bar']); 357 Expect.isNull(mapData['bar']);
298 }); 358 });
299 359
300 // @metadata 360 // @metadata
301 var metadata9 = metadata[9]; 361 metadata = metadataList[metadataListIndex++];
302 Expect.isTrue(metadata9 is InstanceMirror); 362 Expect.isTrue(metadata is InstanceMirror);
303 Expect.isFalse(metadata9.hasReflectee); 363 Expect.isFalse(metadata.hasReflectee);
304 Expect.throws(() => metadata9.reflectee, (_) => true); 364 Expect.throws(() => metadata.reflectee, (_) => true);
305 Expect.equals(metadataType.originalDeclaration, metadata9.type); 365 Expect.equals(metadataType.originalDeclaration, metadata.type);
306 metadata9.getField('data').then((InstanceMirror data) { 366 metadata.getField('data').then((InstanceMirror data) {
307 Expect.isNotNull(data); 367 Expect.isNotNull(data);
308 Expect.isTrue(data.hasReflectee); 368 Expect.isTrue(data.hasReflectee);
309 Expect.isNull(data.reflectee); 369 Expect.isNull(data.reflectee);
310 }); 370 });
311 371
372 // /** Multiline doc comment. */
373 metadata = metadataList[metadataListIndex++];
374 Expect.isTrue(metadata is InstanceMirror);
375 Expect.isFalse(metadata.hasReflectee);
376 Expect.throws(() => metadata.reflectee, (_) => true);
377 Expect.isTrue(metadata is CommentInstanceMirror);
378 Expect.equals(commentType.originalDeclaration, metadata.type);
379 Expect.isTrue(metadata.isDocComment);
380 Expect.stringEquals(
381 "/** Multiline doc comment. */", metadata.text);
382 Expect.stringEquals(
383 "Multiline doc comment. ", metadata.trimmedText);
384
385 // /* Multiline comment. */
386 metadata = metadataList[metadataListIndex++];
387 Expect.isTrue(metadata is InstanceMirror);
388 Expect.isFalse(metadata.hasReflectee);
389 Expect.throws(() => metadata.reflectee, (_) => true);
390 Expect.isTrue(metadata is CommentInstanceMirror);
391 Expect.equals(commentType.originalDeclaration, metadata.type);
392 Expect.isFalse(metadata.isDocComment);
393 Expect.stringEquals(
394 "/* Multiline comment. */", metadata.text);
395 Expect.stringEquals(
396 "Multiline comment. ", metadata.trimmedText);
397
398 Expect.equals(metadataList.length, metadataListIndex);
399
312 ////////////////////////////////////////////////////////////////////////////// 400 //////////////////////////////////////////////////////////////////////////////
313 // Location test 401 // Location test
314 ////////////////////////////////////////////////////////////////////////////// 402 //////////////////////////////////////////////////////////////////////////////
315 403
316 var fooClassLocation = fooClass.location; 404 var fooClassLocation = fooClass.location;
317 Expect.isNotNull(fooClassLocation); 405 Expect.isNotNull(fooClassLocation);
318 // Expect the location to start with the first metadata. 406 // Expect the location to start with the first metadata, not including the
319 Expect.equals(348, fooClassLocation.offset, "Unexpected offset"); 407 // leading comment.
408 Expect.equals(376, fooClassLocation.offset, "Unexpected offset");
320 // Expect the location to end with the class body. 409 // Expect the location to end with the class body.
321 Expect.equals(227, fooClassLocation.length, "Unexpected length"); 410 Expect.equals(332, fooClassLocation.length, "Unexpected length");
322 Expect.equals(17, fooClassLocation.line, "Unexpected line"); 411 Expect.equals(18, fooClassLocation.line, "Unexpected line");
323 Expect.equals(1, fooClassLocation.column, "Unexpected column"); 412 Expect.equals(1, fooClassLocation.column, "Unexpected column");
324 413
325 } 414 }
326 415
327 // Testing abstract class Bar: 416 // Testing abstract class Bar:
328 // 417 //
329 // abstract class Bar<E> { 418 // abstract class Bar<E> {
330 // 419 //
331 // } 420 // }
332 void testBar(MirrorSystem system, LibraryMirror helperLibrary, 421 void testBar(MirrorSystem system, LibraryMirror helperLibrary,
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
953 Expect.isTrue(privateFactoryConstructor.isPrivate); 1042 Expect.isTrue(privateFactoryConstructor.isPrivate);
954 Expect.isFalse(privateFactoryConstructor.isConstConstructor); 1043 Expect.isFalse(privateFactoryConstructor.isConstConstructor);
955 Expect.isFalse(privateFactoryConstructor.isRedirectingConstructor); 1044 Expect.isFalse(privateFactoryConstructor.isRedirectingConstructor);
956 Expect.isFalse(privateFactoryConstructor.isGenerativeConstructor); 1045 Expect.isFalse(privateFactoryConstructor.isGenerativeConstructor);
957 Expect.isTrue(privateFactoryConstructor.isFactoryConstructor); 1046 Expect.isTrue(privateFactoryConstructor.isFactoryConstructor);
958 1047
959 var metadata = privateClass.metadata; 1048 var metadata = privateClass.metadata;
960 Expect.isNotNull(metadata); 1049 Expect.isNotNull(metadata);
961 Expect.equals(0, metadata.length); 1050 Expect.equals(0, metadata.length);
962 } 1051 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/mirrors_helper.dart ('k') | tests/compiler/dart2js/strip_comment_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698