OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:analyzer/dart/ast/ast.dart'; | 7 import 'package:analyzer/dart/ast/ast.dart'; |
8 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; | 8 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; |
9 import 'package:analyzer/dart/element/element.dart'; | 9 import 'package:analyzer/dart/element/element.dart'; |
10 import 'package:analyzer/dart/element/type.dart'; | 10 import 'package:analyzer/dart/element/type.dart'; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 expect(fileEdit, isNotNull); | 54 expect(fileEdit, isNotNull); |
55 return fileEdit.edits; | 55 return fileEdit.edits; |
56 } | 56 } |
57 } | 57 } |
58 | 58 |
59 @reflectiveTest | 59 @reflectiveTest |
60 class DartChangeBuilderImplTest extends AbstractContextTest { | 60 class DartChangeBuilderImplTest extends AbstractContextTest { |
61 test_createFileEditBuilder() async { | 61 test_createFileEditBuilder() async { |
62 String path = provider.convertPath('/test.dart'); | 62 String path = provider.convertPath('/test.dart'); |
63 addSource(path, 'library test;'); | 63 addSource(path, 'library test;'); |
64 int timeStamp = 54; | |
65 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 64 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
66 DartFileEditBuilderImpl fileEditBuilder = | 65 DartFileEditBuilderImpl fileEditBuilder = |
67 await builder.createFileEditBuilder(path, timeStamp); | 66 await builder.createFileEditBuilder(path); |
68 expect(fileEditBuilder, new isInstanceOf<DartFileEditBuilder>()); | 67 expect(fileEditBuilder, new isInstanceOf<DartFileEditBuilder>()); |
69 SourceFileEdit fileEdit = fileEditBuilder.fileEdit; | 68 SourceFileEdit fileEdit = fileEditBuilder.fileEdit; |
70 expect(fileEdit.file, path); | 69 expect(fileEdit.file, path); |
71 expect(fileEdit.fileStamp, timeStamp); | |
72 } | 70 } |
73 } | 71 } |
74 | 72 |
75 @reflectiveTest | 73 @reflectiveTest |
76 class DartEditBuilderImplTest extends AbstractContextTest | 74 class DartEditBuilderImplTest extends AbstractContextTest |
77 with BuilderTestMixin { | 75 with BuilderTestMixin { |
78 test_importLibraries_DP() async { | 76 test_importLibraries_DP() async { |
79 await _assertImportLibraries( | 77 await _assertImportLibraries( |
80 ''' | 78 ''' |
81 import 'dart:aaa'; | 79 import 'dart:aaa'; |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 import 'aaa.dart'; | 332 import 'aaa.dart'; |
335 '''); | 333 '''); |
336 } | 334 } |
337 | 335 |
338 test_writeClassDeclaration_interfaces() async { | 336 test_writeClassDeclaration_interfaces() async { |
339 String path = provider.convertPath('/test.dart'); | 337 String path = provider.convertPath('/test.dart'); |
340 addSource(path, 'class A {}'); | 338 addSource(path, 'class A {}'); |
341 DartType typeA = await _getType(path, 'A'); | 339 DartType typeA = await _getType(path, 'A'); |
342 | 340 |
343 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 341 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
344 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 342 await builder.addFileEdit(path, (FileEditBuilder builder) { |
345 builder.addInsertion(0, (EditBuilder builder) { | 343 builder.addInsertion(0, (EditBuilder builder) { |
346 (builder as DartEditBuilder) | 344 (builder as DartEditBuilder) |
347 .writeClassDeclaration('C', interfaces: [typeA]); | 345 .writeClassDeclaration('C', interfaces: [typeA]); |
348 }); | 346 }); |
349 }); | 347 }); |
350 SourceEdit edit = getEdit(builder); | 348 SourceEdit edit = getEdit(builder); |
351 expect( | 349 expect( |
352 edit.replacement, equalsIgnoringWhitespace('class C implements A { }')); | 350 edit.replacement, equalsIgnoringWhitespace('class C implements A { }')); |
353 } | 351 } |
354 | 352 |
355 test_writeClassDeclaration_isAbstract() async { | 353 test_writeClassDeclaration_isAbstract() async { |
356 String path = provider.convertPath('/test.dart'); | 354 String path = provider.convertPath('/test.dart'); |
357 addSource(path, ''); | 355 addSource(path, ''); |
358 | 356 |
359 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 357 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
360 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 358 await builder.addFileEdit(path, (FileEditBuilder builder) { |
361 builder.addInsertion(0, (EditBuilder builder) { | 359 builder.addInsertion(0, (EditBuilder builder) { |
362 (builder as DartEditBuilder) | 360 (builder as DartEditBuilder) |
363 .writeClassDeclaration('C', isAbstract: true); | 361 .writeClassDeclaration('C', isAbstract: true); |
364 }); | 362 }); |
365 }); | 363 }); |
366 SourceEdit edit = getEdit(builder); | 364 SourceEdit edit = getEdit(builder); |
367 expect(edit.replacement, equalsIgnoringWhitespace('abstract class C { }')); | 365 expect(edit.replacement, equalsIgnoringWhitespace('abstract class C { }')); |
368 } | 366 } |
369 | 367 |
370 test_writeClassDeclaration_memberWriter() async { | 368 test_writeClassDeclaration_memberWriter() async { |
371 String path = provider.convertPath('/test.dart'); | 369 String path = provider.convertPath('/test.dart'); |
372 addSource(path, ''); | 370 addSource(path, ''); |
373 | 371 |
374 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 372 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
375 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 373 await builder.addFileEdit(path, (FileEditBuilder builder) { |
376 builder.addInsertion(0, (EditBuilder builder) { | 374 builder.addInsertion(0, (EditBuilder builder) { |
377 (builder as DartEditBuilder).writeClassDeclaration('C', | 375 (builder as DartEditBuilder).writeClassDeclaration('C', |
378 memberWriter: () { | 376 memberWriter: () { |
379 builder.write('/**/'); | 377 builder.write('/**/'); |
380 }); | 378 }); |
381 }); | 379 }); |
382 }); | 380 }); |
383 SourceEdit edit = getEdit(builder); | 381 SourceEdit edit = getEdit(builder); |
384 expect(edit.replacement, equalsIgnoringWhitespace('class C { /**/ }')); | 382 expect(edit.replacement, equalsIgnoringWhitespace('class C { /**/ }')); |
385 } | 383 } |
386 | 384 |
387 test_writeClassDeclaration_mixins_noSuperclass() async { | 385 test_writeClassDeclaration_mixins_noSuperclass() async { |
388 String path = provider.convertPath('/test.dart'); | 386 String path = provider.convertPath('/test.dart'); |
389 addSource(path, 'class A {}'); | 387 addSource(path, 'class A {}'); |
390 DartType typeA = await _getType(path, 'A'); | 388 DartType typeA = await _getType(path, 'A'); |
391 | 389 |
392 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 390 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
393 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 391 await builder.addFileEdit(path, (FileEditBuilder builder) { |
394 builder.addInsertion(0, (EditBuilder builder) { | 392 builder.addInsertion(0, (EditBuilder builder) { |
395 (builder as DartEditBuilder) | 393 (builder as DartEditBuilder) |
396 .writeClassDeclaration('C', mixins: [typeA]); | 394 .writeClassDeclaration('C', mixins: [typeA]); |
397 }); | 395 }); |
398 }); | 396 }); |
399 SourceEdit edit = getEdit(builder); | 397 SourceEdit edit = getEdit(builder); |
400 expect(edit.replacement, | 398 expect(edit.replacement, |
401 equalsIgnoringWhitespace('class C extends Object with A { }')); | 399 equalsIgnoringWhitespace('class C extends Object with A { }')); |
402 } | 400 } |
403 | 401 |
404 test_writeClassDeclaration_mixins_superclass() async { | 402 test_writeClassDeclaration_mixins_superclass() async { |
405 String path = provider.convertPath('/test.dart'); | 403 String path = provider.convertPath('/test.dart'); |
406 addSource(path, 'class A {} class B {}'); | 404 addSource(path, 'class A {} class B {}'); |
407 DartType typeA = await _getType(path, 'A'); | 405 DartType typeA = await _getType(path, 'A'); |
408 DartType typeB = await _getType(path, 'B'); | 406 DartType typeB = await _getType(path, 'B'); |
409 | 407 |
410 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 408 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
411 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 409 await builder.addFileEdit(path, (FileEditBuilder builder) { |
412 builder.addInsertion(0, (EditBuilder builder) { | 410 builder.addInsertion(0, (EditBuilder builder) { |
413 (builder as DartEditBuilder) | 411 (builder as DartEditBuilder) |
414 .writeClassDeclaration('C', mixins: [typeB], superclass: typeA); | 412 .writeClassDeclaration('C', mixins: [typeB], superclass: typeA); |
415 }); | 413 }); |
416 }); | 414 }); |
417 SourceEdit edit = getEdit(builder); | 415 SourceEdit edit = getEdit(builder); |
418 expect(edit.replacement, | 416 expect(edit.replacement, |
419 equalsIgnoringWhitespace('class C extends A with B { }')); | 417 equalsIgnoringWhitespace('class C extends A with B { }')); |
420 } | 418 } |
421 | 419 |
422 test_writeClassDeclaration_nameGroupName() async { | 420 test_writeClassDeclaration_nameGroupName() async { |
423 String path = provider.convertPath('/test.dart'); | 421 String path = provider.convertPath('/test.dart'); |
424 addSource(path, ''); | 422 addSource(path, ''); |
425 | 423 |
426 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 424 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
427 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 425 await builder.addFileEdit(path, (FileEditBuilder builder) { |
428 builder.addInsertion(0, (EditBuilder builder) { | 426 builder.addInsertion(0, (EditBuilder builder) { |
429 (builder as DartEditBuilder) | 427 (builder as DartEditBuilder) |
430 .writeClassDeclaration('C', nameGroupName: 'name'); | 428 .writeClassDeclaration('C', nameGroupName: 'name'); |
431 }); | 429 }); |
432 }); | 430 }); |
433 SourceEdit edit = getEdit(builder); | 431 SourceEdit edit = getEdit(builder); |
434 expect(edit.replacement, equalsIgnoringWhitespace('class C { }')); | 432 expect(edit.replacement, equalsIgnoringWhitespace('class C { }')); |
435 | 433 |
436 List<LinkedEditGroup> linkedEditGroups = | 434 List<LinkedEditGroup> linkedEditGroups = |
437 builder.sourceChange.linkedEditGroups; | 435 builder.sourceChange.linkedEditGroups; |
438 expect(linkedEditGroups, hasLength(1)); | 436 expect(linkedEditGroups, hasLength(1)); |
439 LinkedEditGroup group = linkedEditGroups[0]; | 437 LinkedEditGroup group = linkedEditGroups[0]; |
440 expect(group.length, 1); | 438 expect(group.length, 1); |
441 expect(group.positions, hasLength(1)); | 439 expect(group.positions, hasLength(1)); |
442 } | 440 } |
443 | 441 |
444 test_writeClassDeclaration_superclass() async { | 442 test_writeClassDeclaration_superclass() async { |
445 String path = provider.convertPath('/test.dart'); | 443 String path = provider.convertPath('/test.dart'); |
446 addSource(path, 'class B {}'); | 444 addSource(path, 'class B {}'); |
447 DartType typeB = await _getType(path, 'B'); | 445 DartType typeB = await _getType(path, 'B'); |
448 | 446 |
449 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 447 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
450 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 448 await builder.addFileEdit(path, (FileEditBuilder builder) { |
451 builder.addInsertion(0, (EditBuilder builder) { | 449 builder.addInsertion(0, (EditBuilder builder) { |
452 (builder as DartEditBuilder).writeClassDeclaration('C', | 450 (builder as DartEditBuilder).writeClassDeclaration('C', |
453 superclass: typeB, superclassGroupName: 'superclass'); | 451 superclass: typeB, superclassGroupName: 'superclass'); |
454 }); | 452 }); |
455 }); | 453 }); |
456 SourceEdit edit = getEdit(builder); | 454 SourceEdit edit = getEdit(builder); |
457 expect(edit.replacement, equalsIgnoringWhitespace('class C extends B { }')); | 455 expect(edit.replacement, equalsIgnoringWhitespace('class C extends B { }')); |
458 | 456 |
459 List<LinkedEditGroup> linkedEditGroups = | 457 List<LinkedEditGroup> linkedEditGroups = |
460 builder.sourceChange.linkedEditGroups; | 458 builder.sourceChange.linkedEditGroups; |
461 expect(linkedEditGroups, hasLength(1)); | 459 expect(linkedEditGroups, hasLength(1)); |
462 LinkedEditGroup group = linkedEditGroups[0]; | 460 LinkedEditGroup group = linkedEditGroups[0]; |
463 expect(group.length, 1); | 461 expect(group.length, 1); |
464 expect(group.positions, hasLength(1)); | 462 expect(group.positions, hasLength(1)); |
465 } | 463 } |
466 | 464 |
467 test_writeFieldDeclaration_initializerWriter() async { | 465 test_writeFieldDeclaration_initializerWriter() async { |
468 String path = provider.convertPath('/test.dart'); | 466 String path = provider.convertPath('/test.dart'); |
469 String content = 'class A {}'; | 467 String content = 'class A {}'; |
470 addSource(path, content); | 468 addSource(path, content); |
471 | 469 |
472 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 470 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
473 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 471 await builder.addFileEdit(path, (FileEditBuilder builder) { |
474 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 472 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
475 (builder as DartEditBuilder).writeFieldDeclaration('f', | 473 (builder as DartEditBuilder).writeFieldDeclaration('f', |
476 initializerWriter: () { | 474 initializerWriter: () { |
477 builder.write('e'); | 475 builder.write('e'); |
478 }); | 476 }); |
479 }); | 477 }); |
480 }); | 478 }); |
481 SourceEdit edit = getEdit(builder); | 479 SourceEdit edit = getEdit(builder); |
482 expect(edit.replacement, equalsIgnoringWhitespace('var f = e;')); | 480 expect(edit.replacement, equalsIgnoringWhitespace('var f = e;')); |
483 } | 481 } |
484 | 482 |
485 test_writeFieldDeclaration_isConst() async { | 483 test_writeFieldDeclaration_isConst() async { |
486 String path = provider.convertPath('/test.dart'); | 484 String path = provider.convertPath('/test.dart'); |
487 String content = 'class A {}'; | 485 String content = 'class A {}'; |
488 addSource(path, content); | 486 addSource(path, content); |
489 | 487 |
490 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 488 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
491 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 489 await builder.addFileEdit(path, (FileEditBuilder builder) { |
492 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 490 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
493 (builder as DartEditBuilder).writeFieldDeclaration('f', isConst: true); | 491 (builder as DartEditBuilder).writeFieldDeclaration('f', isConst: true); |
494 }); | 492 }); |
495 }); | 493 }); |
496 SourceEdit edit = getEdit(builder); | 494 SourceEdit edit = getEdit(builder); |
497 expect(edit.replacement, equalsIgnoringWhitespace('const f;')); | 495 expect(edit.replacement, equalsIgnoringWhitespace('const f;')); |
498 } | 496 } |
499 | 497 |
500 test_writeFieldDeclaration_isConst_isFinal() async { | 498 test_writeFieldDeclaration_isConst_isFinal() async { |
501 String path = provider.convertPath('/test.dart'); | 499 String path = provider.convertPath('/test.dart'); |
502 String content = 'class A {}'; | 500 String content = 'class A {}'; |
503 addSource(path, content); | 501 addSource(path, content); |
504 | 502 |
505 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 503 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
506 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 504 await builder.addFileEdit(path, (FileEditBuilder builder) { |
507 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 505 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
508 (builder as DartEditBuilder) | 506 (builder as DartEditBuilder) |
509 .writeFieldDeclaration('f', isConst: true, isFinal: true); | 507 .writeFieldDeclaration('f', isConst: true, isFinal: true); |
510 }); | 508 }); |
511 }); | 509 }); |
512 SourceEdit edit = getEdit(builder); | 510 SourceEdit edit = getEdit(builder); |
513 expect(edit.replacement, equalsIgnoringWhitespace('const f;')); | 511 expect(edit.replacement, equalsIgnoringWhitespace('const f;')); |
514 } | 512 } |
515 | 513 |
516 test_writeFieldDeclaration_isFinal() async { | 514 test_writeFieldDeclaration_isFinal() async { |
517 String path = provider.convertPath('/test.dart'); | 515 String path = provider.convertPath('/test.dart'); |
518 String content = 'class A {}'; | 516 String content = 'class A {}'; |
519 addSource(path, content); | 517 addSource(path, content); |
520 | 518 |
521 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 519 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
522 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 520 await builder.addFileEdit(path, (FileEditBuilder builder) { |
523 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 521 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
524 (builder as DartEditBuilder).writeFieldDeclaration('f', isFinal: true); | 522 (builder as DartEditBuilder).writeFieldDeclaration('f', isFinal: true); |
525 }); | 523 }); |
526 }); | 524 }); |
527 SourceEdit edit = getEdit(builder); | 525 SourceEdit edit = getEdit(builder); |
528 expect(edit.replacement, equalsIgnoringWhitespace('final f;')); | 526 expect(edit.replacement, equalsIgnoringWhitespace('final f;')); |
529 } | 527 } |
530 | 528 |
531 test_writeFieldDeclaration_isStatic() async { | 529 test_writeFieldDeclaration_isStatic() async { |
532 String path = provider.convertPath('/test.dart'); | 530 String path = provider.convertPath('/test.dart'); |
533 String content = 'class A {}'; | 531 String content = 'class A {}'; |
534 addSource(path, content); | 532 addSource(path, content); |
535 | 533 |
536 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 534 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
537 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 535 await builder.addFileEdit(path, (FileEditBuilder builder) { |
538 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 536 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
539 (builder as DartEditBuilder).writeFieldDeclaration('f', isStatic: true); | 537 (builder as DartEditBuilder).writeFieldDeclaration('f', isStatic: true); |
540 }); | 538 }); |
541 }); | 539 }); |
542 SourceEdit edit = getEdit(builder); | 540 SourceEdit edit = getEdit(builder); |
543 expect(edit.replacement, equalsIgnoringWhitespace('static var f;')); | 541 expect(edit.replacement, equalsIgnoringWhitespace('static var f;')); |
544 } | 542 } |
545 | 543 |
546 test_writeFieldDeclaration_nameGroupName() async { | 544 test_writeFieldDeclaration_nameGroupName() async { |
547 String path = provider.convertPath('/test.dart'); | 545 String path = provider.convertPath('/test.dart'); |
548 String content = 'class A {}'; | 546 String content = 'class A {}'; |
549 addSource(path, content); | 547 addSource(path, content); |
550 | 548 |
551 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 549 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
552 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 550 await builder.addFileEdit(path, (FileEditBuilder builder) { |
553 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 551 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
554 (builder as DartEditBuilder) | 552 (builder as DartEditBuilder) |
555 .writeFieldDeclaration('f', nameGroupName: 'name'); | 553 .writeFieldDeclaration('f', nameGroupName: 'name'); |
556 }); | 554 }); |
557 }); | 555 }); |
558 SourceEdit edit = getEdit(builder); | 556 SourceEdit edit = getEdit(builder); |
559 expect(edit.replacement, equalsIgnoringWhitespace('var f;')); | 557 expect(edit.replacement, equalsIgnoringWhitespace('var f;')); |
560 | 558 |
561 List<LinkedEditGroup> linkedEditGroups = | 559 List<LinkedEditGroup> linkedEditGroups = |
562 builder.sourceChange.linkedEditGroups; | 560 builder.sourceChange.linkedEditGroups; |
563 expect(linkedEditGroups, hasLength(1)); | 561 expect(linkedEditGroups, hasLength(1)); |
564 LinkedEditGroup group = linkedEditGroups[0]; | 562 LinkedEditGroup group = linkedEditGroups[0]; |
565 expect(group.length, 1); | 563 expect(group.length, 1); |
566 expect(group.positions, hasLength(1)); | 564 expect(group.positions, hasLength(1)); |
567 Position position = group.positions[0]; | 565 Position position = group.positions[0]; |
568 expect(position.offset, equals(13)); | 566 expect(position.offset, equals(13)); |
569 } | 567 } |
570 | 568 |
571 test_writeFieldDeclaration_type_typeGroupName() async { | 569 test_writeFieldDeclaration_type_typeGroupName() async { |
572 String path = provider.convertPath('/test.dart'); | 570 String path = provider.convertPath('/test.dart'); |
573 String content = 'class A {} class B {}'; | 571 String content = 'class A {} class B {}'; |
574 addSource(path, content); | 572 addSource(path, content); |
575 DartType typeA = await _getType(path, 'A'); | 573 DartType typeA = await _getType(path, 'A'); |
576 | 574 |
577 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 575 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
578 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 576 await builder.addFileEdit(path, (FileEditBuilder builder) { |
579 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 577 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
580 (builder as DartEditBuilder) | 578 (builder as DartEditBuilder) |
581 .writeFieldDeclaration('f', type: typeA, typeGroupName: 'type'); | 579 .writeFieldDeclaration('f', type: typeA, typeGroupName: 'type'); |
582 }); | 580 }); |
583 }); | 581 }); |
584 SourceEdit edit = getEdit(builder); | 582 SourceEdit edit = getEdit(builder); |
585 expect(edit.replacement, equalsIgnoringWhitespace('A f;')); | 583 expect(edit.replacement, equalsIgnoringWhitespace('A f;')); |
586 | 584 |
587 List<LinkedEditGroup> linkedEditGroups = | 585 List<LinkedEditGroup> linkedEditGroups = |
588 builder.sourceChange.linkedEditGroups; | 586 builder.sourceChange.linkedEditGroups; |
589 expect(linkedEditGroups, hasLength(1)); | 587 expect(linkedEditGroups, hasLength(1)); |
590 LinkedEditGroup group = linkedEditGroups[0]; | 588 LinkedEditGroup group = linkedEditGroups[0]; |
591 expect(group.length, 1); | 589 expect(group.length, 1); |
592 expect(group.positions, hasLength(1)); | 590 expect(group.positions, hasLength(1)); |
593 Position position = group.positions[0]; | 591 Position position = group.positions[0]; |
594 expect(position.offset, equals(20)); | 592 expect(position.offset, equals(20)); |
595 } | 593 } |
596 | 594 |
597 test_writeFunctionDeclaration_noReturnType_noParams_body() async { | 595 test_writeFunctionDeclaration_noReturnType_noParams_body() async { |
598 String path = provider.convertPath('/test.dart'); | 596 String path = provider.convertPath('/test.dart'); |
599 String content = ''; | 597 String content = ''; |
600 addSource(path, content); | 598 addSource(path, content); |
601 | 599 |
602 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 600 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
603 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 601 await builder.addFileEdit(path, (FileEditBuilder builder) { |
604 builder.addInsertion(0, (EditBuilder builder) { | 602 builder.addInsertion(0, (EditBuilder builder) { |
605 (builder as DartEditBuilder).writeFunctionDeclaration('fib', | 603 (builder as DartEditBuilder).writeFunctionDeclaration('fib', |
606 bodyWriter: () { | 604 bodyWriter: () { |
607 builder.write('{ ... }'); | 605 builder.write('{ ... }'); |
608 }); | 606 }); |
609 }); | 607 }); |
610 }); | 608 }); |
611 SourceEdit edit = getEdit(builder); | 609 SourceEdit edit = getEdit(builder); |
612 expect(edit.replacement, equalsIgnoringWhitespace('fib() { ... }')); | 610 expect(edit.replacement, equalsIgnoringWhitespace('fib() { ... }')); |
613 } | 611 } |
614 | 612 |
615 test_writeFunctionDeclaration_noReturnType_noParams_noBody() async { | 613 test_writeFunctionDeclaration_noReturnType_noParams_noBody() async { |
616 String path = provider.convertPath('/test.dart'); | 614 String path = provider.convertPath('/test.dart'); |
617 String content = ''; | 615 String content = ''; |
618 addSource(path, content); | 616 addSource(path, content); |
619 | 617 |
620 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 618 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
621 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 619 await builder.addFileEdit(path, (FileEditBuilder builder) { |
622 builder.addInsertion(0, (EditBuilder builder) { | 620 builder.addInsertion(0, (EditBuilder builder) { |
623 (builder as DartEditBuilder) | 621 (builder as DartEditBuilder) |
624 .writeFunctionDeclaration('fib', nameGroupName: 'name'); | 622 .writeFunctionDeclaration('fib', nameGroupName: 'name'); |
625 }); | 623 }); |
626 }); | 624 }); |
627 SourceEdit edit = getEdit(builder); | 625 SourceEdit edit = getEdit(builder); |
628 expect(edit.replacement, equalsIgnoringWhitespace('fib() {}')); | 626 expect(edit.replacement, equalsIgnoringWhitespace('fib() {}')); |
629 | 627 |
630 List<LinkedEditGroup> linkedEditGroups = | 628 List<LinkedEditGroup> linkedEditGroups = |
631 builder.sourceChange.linkedEditGroups; | 629 builder.sourceChange.linkedEditGroups; |
632 expect(linkedEditGroups, hasLength(1)); | 630 expect(linkedEditGroups, hasLength(1)); |
633 LinkedEditGroup group = linkedEditGroups[0]; | 631 LinkedEditGroup group = linkedEditGroups[0]; |
634 expect(group.length, 3); | 632 expect(group.length, 3); |
635 expect(group.positions, hasLength(1)); | 633 expect(group.positions, hasLength(1)); |
636 } | 634 } |
637 | 635 |
638 test_writeFunctionDeclaration_noReturnType_params_noBody() async { | 636 test_writeFunctionDeclaration_noReturnType_params_noBody() async { |
639 String path = provider.convertPath('/test.dart'); | 637 String path = provider.convertPath('/test.dart'); |
640 String content = ''; | 638 String content = ''; |
641 addSource(path, content); | 639 addSource(path, content); |
642 | 640 |
643 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 641 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
644 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 642 await builder.addFileEdit(path, (FileEditBuilder builder) { |
645 builder.addInsertion(0, (EditBuilder builder) { | 643 builder.addInsertion(0, (EditBuilder builder) { |
646 (builder as DartEditBuilder).writeFunctionDeclaration('fib', | 644 (builder as DartEditBuilder).writeFunctionDeclaration('fib', |
647 parameterWriter: () { | 645 parameterWriter: () { |
648 builder.write('p, q, r'); | 646 builder.write('p, q, r'); |
649 }); | 647 }); |
650 }); | 648 }); |
651 }); | 649 }); |
652 SourceEdit edit = getEdit(builder); | 650 SourceEdit edit = getEdit(builder); |
653 expect(edit.replacement, equalsIgnoringWhitespace('fib(p, q, r) {}')); | 651 expect(edit.replacement, equalsIgnoringWhitespace('fib(p, q, r) {}')); |
654 } | 652 } |
655 | 653 |
656 test_writeFunctionDeclaration_returnType_noParams_noBody() async { | 654 test_writeFunctionDeclaration_returnType_noParams_noBody() async { |
657 String path = provider.convertPath('/test.dart'); | 655 String path = provider.convertPath('/test.dart'); |
658 String content = 'class A {}'; | 656 String content = 'class A {}'; |
659 addSource(path, content); | 657 addSource(path, content); |
660 | 658 |
661 DartType typeA = await _getType(path, 'A'); | 659 DartType typeA = await _getType(path, 'A'); |
662 | 660 |
663 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 661 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
664 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 662 await builder.addFileEdit(path, (FileEditBuilder builder) { |
665 builder.addInsertion(0, (EditBuilder builder) { | 663 builder.addInsertion(0, (EditBuilder builder) { |
666 (builder as DartEditBuilder).writeFunctionDeclaration('fib', | 664 (builder as DartEditBuilder).writeFunctionDeclaration('fib', |
667 returnType: typeA, returnTypeGroupName: 'type'); | 665 returnType: typeA, returnTypeGroupName: 'type'); |
668 }); | 666 }); |
669 }); | 667 }); |
670 SourceEdit edit = getEdit(builder); | 668 SourceEdit edit = getEdit(builder); |
671 expect(edit.replacement, equalsIgnoringWhitespace('A fib() => null;')); | 669 expect(edit.replacement, equalsIgnoringWhitespace('A fib() => null;')); |
672 | 670 |
673 List<LinkedEditGroup> linkedEditGroups = | 671 List<LinkedEditGroup> linkedEditGroups = |
674 builder.sourceChange.linkedEditGroups; | 672 builder.sourceChange.linkedEditGroups; |
675 expect(linkedEditGroups, hasLength(1)); | 673 expect(linkedEditGroups, hasLength(1)); |
676 LinkedEditGroup group = linkedEditGroups[0]; | 674 LinkedEditGroup group = linkedEditGroups[0]; |
677 expect(group.length, 1); | 675 expect(group.length, 1); |
678 expect(group.positions, hasLength(1)); | 676 expect(group.positions, hasLength(1)); |
679 } | 677 } |
680 | 678 |
681 test_writeGetterDeclaration_bodyWriter() async { | 679 test_writeGetterDeclaration_bodyWriter() async { |
682 String path = provider.convertPath('/test.dart'); | 680 String path = provider.convertPath('/test.dart'); |
683 String content = 'class A {}'; | 681 String content = 'class A {}'; |
684 addSource(path, content); | 682 addSource(path, content); |
685 | 683 |
686 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 684 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
687 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 685 await builder.addFileEdit(path, (FileEditBuilder builder) { |
688 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 686 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
689 (builder as DartEditBuilder).writeGetterDeclaration('g', | 687 (builder as DartEditBuilder).writeGetterDeclaration('g', |
690 bodyWriter: () { | 688 bodyWriter: () { |
691 builder.write('{}'); | 689 builder.write('{}'); |
692 }); | 690 }); |
693 }); | 691 }); |
694 }); | 692 }); |
695 SourceEdit edit = getEdit(builder); | 693 SourceEdit edit = getEdit(builder); |
696 expect(edit.replacement, equalsIgnoringWhitespace('get g {}')); | 694 expect(edit.replacement, equalsIgnoringWhitespace('get g {}')); |
697 } | 695 } |
698 | 696 |
699 test_writeGetterDeclaration_isStatic() async { | 697 test_writeGetterDeclaration_isStatic() async { |
700 String path = provider.convertPath('/test.dart'); | 698 String path = provider.convertPath('/test.dart'); |
701 String content = 'class A {}'; | 699 String content = 'class A {}'; |
702 addSource(path, content); | 700 addSource(path, content); |
703 | 701 |
704 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 702 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
705 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 703 await builder.addFileEdit(path, (FileEditBuilder builder) { |
706 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 704 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
707 (builder as DartEditBuilder) | 705 (builder as DartEditBuilder) |
708 .writeGetterDeclaration('g', isStatic: true); | 706 .writeGetterDeclaration('g', isStatic: true); |
709 }); | 707 }); |
710 }); | 708 }); |
711 SourceEdit edit = getEdit(builder); | 709 SourceEdit edit = getEdit(builder); |
712 expect(edit.replacement, equalsIgnoringWhitespace('static get g => null;')); | 710 expect(edit.replacement, equalsIgnoringWhitespace('static get g => null;')); |
713 } | 711 } |
714 | 712 |
715 test_writeGetterDeclaration_nameGroupName() async { | 713 test_writeGetterDeclaration_nameGroupName() async { |
716 String path = provider.convertPath('/test.dart'); | 714 String path = provider.convertPath('/test.dart'); |
717 String content = 'class A {}'; | 715 String content = 'class A {}'; |
718 addSource(path, content); | 716 addSource(path, content); |
719 | 717 |
720 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 718 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
721 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 719 await builder.addFileEdit(path, (FileEditBuilder builder) { |
722 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 720 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
723 (builder as DartEditBuilder) | 721 (builder as DartEditBuilder) |
724 .writeGetterDeclaration('g', nameGroupName: 'name'); | 722 .writeGetterDeclaration('g', nameGroupName: 'name'); |
725 }); | 723 }); |
726 }); | 724 }); |
727 SourceEdit edit = getEdit(builder); | 725 SourceEdit edit = getEdit(builder); |
728 expect(edit.replacement, equalsIgnoringWhitespace('get g => null;')); | 726 expect(edit.replacement, equalsIgnoringWhitespace('get g => null;')); |
729 | 727 |
730 List<LinkedEditGroup> linkedEditGroups = | 728 List<LinkedEditGroup> linkedEditGroups = |
731 builder.sourceChange.linkedEditGroups; | 729 builder.sourceChange.linkedEditGroups; |
732 expect(linkedEditGroups, hasLength(1)); | 730 expect(linkedEditGroups, hasLength(1)); |
733 LinkedEditGroup group = linkedEditGroups[0]; | 731 LinkedEditGroup group = linkedEditGroups[0]; |
734 expect(group.length, 1); | 732 expect(group.length, 1); |
735 expect(group.positions, hasLength(1)); | 733 expect(group.positions, hasLength(1)); |
736 Position position = group.positions[0]; | 734 Position position = group.positions[0]; |
737 expect(position.offset, equals(13)); | 735 expect(position.offset, equals(13)); |
738 } | 736 } |
739 | 737 |
740 test_writeGetterDeclaration_returnType() async { | 738 test_writeGetterDeclaration_returnType() async { |
741 String path = provider.convertPath('/test.dart'); | 739 String path = provider.convertPath('/test.dart'); |
742 String content = 'class A {} class B {}'; | 740 String content = 'class A {} class B {}'; |
743 addSource(path, content); | 741 addSource(path, content); |
744 DartType typeA = await _getType(path, 'A'); | 742 DartType typeA = await _getType(path, 'A'); |
745 | 743 |
746 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 744 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
747 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 745 await builder.addFileEdit(path, (FileEditBuilder builder) { |
748 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 746 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
749 (builder as DartEditBuilder).writeGetterDeclaration('g', | 747 (builder as DartEditBuilder).writeGetterDeclaration('g', |
750 returnType: typeA, returnTypeGroupName: 'returnType'); | 748 returnType: typeA, returnTypeGroupName: 'returnType'); |
751 }); | 749 }); |
752 }); | 750 }); |
753 SourceEdit edit = getEdit(builder); | 751 SourceEdit edit = getEdit(builder); |
754 expect(edit.replacement, equalsIgnoringWhitespace('A get g => null;')); | 752 expect(edit.replacement, equalsIgnoringWhitespace('A get g => null;')); |
755 | 753 |
756 List<LinkedEditGroup> linkedEditGroups = | 754 List<LinkedEditGroup> linkedEditGroups = |
757 builder.sourceChange.linkedEditGroups; | 755 builder.sourceChange.linkedEditGroups; |
758 expect(linkedEditGroups, hasLength(1)); | 756 expect(linkedEditGroups, hasLength(1)); |
759 LinkedEditGroup group = linkedEditGroups[0]; | 757 LinkedEditGroup group = linkedEditGroups[0]; |
760 expect(group.length, 1); | 758 expect(group.length, 1); |
761 expect(group.positions, hasLength(1)); | 759 expect(group.positions, hasLength(1)); |
762 Position position = group.positions[0]; | 760 Position position = group.positions[0]; |
763 expect(position.offset, equals(20)); | 761 expect(position.offset, equals(20)); |
764 } | 762 } |
765 | 763 |
766 test_writeLocalVariableDeclaration_noType_initializer() async { | 764 test_writeLocalVariableDeclaration_noType_initializer() async { |
767 String path = provider.convertPath('/test.dart'); | 765 String path = provider.convertPath('/test.dart'); |
768 String content = ''' | 766 String content = ''' |
769 void f() { | 767 void f() { |
770 | 768 |
771 }'''; | 769 }'''; |
772 addSource(path, content); | 770 addSource(path, content); |
773 await driver.getResult(path); | 771 await driver.getResult(path); |
774 | 772 |
775 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 773 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
776 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 774 await builder.addFileEdit(path, (FileEditBuilder builder) { |
777 builder.addInsertion(11, (EditBuilder builder) { | 775 builder.addInsertion(11, (EditBuilder builder) { |
778 (builder as DartEditBuilder).writeLocalVariableDeclaration('foo', | 776 (builder as DartEditBuilder).writeLocalVariableDeclaration('foo', |
779 initializerWriter: () { | 777 initializerWriter: () { |
780 builder.write('null'); | 778 builder.write('null'); |
781 }); | 779 }); |
782 }); | 780 }); |
783 }); | 781 }); |
784 SourceEdit edit = getEdit(builder); | 782 SourceEdit edit = getEdit(builder); |
785 expect(edit.replacement, equalsIgnoringWhitespace('var foo = null;')); | 783 expect(edit.replacement, equalsIgnoringWhitespace('var foo = null;')); |
786 } | 784 } |
787 | 785 |
788 test_writeLocalVariableDeclaration_noType_noInitializer() async { | 786 test_writeLocalVariableDeclaration_noType_noInitializer() async { |
789 String path = provider.convertPath('/test.dart'); | 787 String path = provider.convertPath('/test.dart'); |
790 String content = ''' | 788 String content = ''' |
791 void f() { | 789 void f() { |
792 | 790 |
793 }'''; | 791 }'''; |
794 addSource(path, content); | 792 addSource(path, content); |
795 await driver.getResult(path); | 793 await driver.getResult(path); |
796 | 794 |
797 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 795 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
798 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 796 await builder.addFileEdit(path, (FileEditBuilder builder) { |
799 builder.addInsertion(11, (EditBuilder builder) { | 797 builder.addInsertion(11, (EditBuilder builder) { |
800 (builder as DartEditBuilder) | 798 (builder as DartEditBuilder) |
801 .writeLocalVariableDeclaration('foo', nameGroupName: 'name'); | 799 .writeLocalVariableDeclaration('foo', nameGroupName: 'name'); |
802 }); | 800 }); |
803 }); | 801 }); |
804 SourceEdit edit = getEdit(builder); | 802 SourceEdit edit = getEdit(builder); |
805 expect(edit.replacement, equalsIgnoringWhitespace('var foo;')); | 803 expect(edit.replacement, equalsIgnoringWhitespace('var foo;')); |
806 | 804 |
807 List<LinkedEditGroup> linkedEditGroups = | 805 List<LinkedEditGroup> linkedEditGroups = |
808 builder.sourceChange.linkedEditGroups; | 806 builder.sourceChange.linkedEditGroups; |
809 expect(linkedEditGroups, hasLength(1)); | 807 expect(linkedEditGroups, hasLength(1)); |
810 LinkedEditGroup group = linkedEditGroups[0]; | 808 LinkedEditGroup group = linkedEditGroups[0]; |
811 expect(group.length, 3); | 809 expect(group.length, 3); |
812 expect(group.positions, hasLength(1)); | 810 expect(group.positions, hasLength(1)); |
813 } | 811 } |
814 | 812 |
815 test_writeLocalVariableDeclaration_noType_noInitializer_const() async { | 813 test_writeLocalVariableDeclaration_noType_noInitializer_const() async { |
816 String path = provider.convertPath('/test.dart'); | 814 String path = provider.convertPath('/test.dart'); |
817 String content = ''' | 815 String content = ''' |
818 void f() { | 816 void f() { |
819 | 817 |
820 }'''; | 818 }'''; |
821 addSource(path, content); | 819 addSource(path, content); |
822 await driver.getResult(path); | 820 await driver.getResult(path); |
823 | 821 |
824 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 822 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
825 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 823 await builder.addFileEdit(path, (FileEditBuilder builder) { |
826 builder.addInsertion(11, (EditBuilder builder) { | 824 builder.addInsertion(11, (EditBuilder builder) { |
827 (builder as DartEditBuilder) | 825 (builder as DartEditBuilder) |
828 .writeLocalVariableDeclaration('foo', isConst: true); | 826 .writeLocalVariableDeclaration('foo', isConst: true); |
829 }); | 827 }); |
830 }); | 828 }); |
831 SourceEdit edit = getEdit(builder); | 829 SourceEdit edit = getEdit(builder); |
832 expect(edit.replacement, equalsIgnoringWhitespace('const foo;')); | 830 expect(edit.replacement, equalsIgnoringWhitespace('const foo;')); |
833 } | 831 } |
834 | 832 |
835 test_writeLocalVariableDeclaration_noType_noInitializer_final() async { | 833 test_writeLocalVariableDeclaration_noType_noInitializer_final() async { |
836 String path = provider.convertPath('/test.dart'); | 834 String path = provider.convertPath('/test.dart'); |
837 String content = ''' | 835 String content = ''' |
838 void f() { | 836 void f() { |
839 | 837 |
840 }'''; | 838 }'''; |
841 addSource(path, content); | 839 addSource(path, content); |
842 await driver.getResult(path); | 840 await driver.getResult(path); |
843 | 841 |
844 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 842 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
845 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 843 await builder.addFileEdit(path, (FileEditBuilder builder) { |
846 builder.addInsertion(11, (EditBuilder builder) { | 844 builder.addInsertion(11, (EditBuilder builder) { |
847 (builder as DartEditBuilder) | 845 (builder as DartEditBuilder) |
848 .writeLocalVariableDeclaration('foo', isFinal: true); | 846 .writeLocalVariableDeclaration('foo', isFinal: true); |
849 }); | 847 }); |
850 }); | 848 }); |
851 SourceEdit edit = getEdit(builder); | 849 SourceEdit edit = getEdit(builder); |
852 expect(edit.replacement, equalsIgnoringWhitespace('final foo;')); | 850 expect(edit.replacement, equalsIgnoringWhitespace('final foo;')); |
853 } | 851 } |
854 | 852 |
855 test_writeLocalVariableDeclaration_type_initializer() async { | 853 test_writeLocalVariableDeclaration_type_initializer() async { |
856 String path = provider.convertPath('/test.dart'); | 854 String path = provider.convertPath('/test.dart'); |
857 String content = ''' | 855 String content = ''' |
858 void f() { | 856 void f() { |
859 | 857 |
860 } | 858 } |
861 class MyClass {}'''; | 859 class MyClass {}'''; |
862 addSource(path, content); | 860 addSource(path, content); |
863 CompilationUnit unit = (await driver.getResult(path))?.unit; | 861 CompilationUnit unit = (await driver.getResult(path))?.unit; |
864 | 862 |
865 ClassDeclaration A = unit.declarations[1]; | 863 ClassDeclaration A = unit.declarations[1]; |
866 | 864 |
867 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 865 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
868 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 866 await builder.addFileEdit(path, (FileEditBuilder builder) { |
869 builder.addInsertion(11, (EditBuilder builder) { | 867 builder.addInsertion(11, (EditBuilder builder) { |
870 (builder as DartEditBuilder).writeLocalVariableDeclaration('foo', | 868 (builder as DartEditBuilder).writeLocalVariableDeclaration('foo', |
871 initializerWriter: () { | 869 initializerWriter: () { |
872 builder.write('null'); | 870 builder.write('null'); |
873 }, type: A.element.type); | 871 }, type: A.element.type); |
874 }); | 872 }); |
875 }); | 873 }); |
876 SourceEdit edit = getEdit(builder); | 874 SourceEdit edit = getEdit(builder); |
877 expect(edit.replacement, equalsIgnoringWhitespace('MyClass foo = null;')); | 875 expect(edit.replacement, equalsIgnoringWhitespace('MyClass foo = null;')); |
878 } | 876 } |
879 | 877 |
880 test_writeLocalVariableDeclaration_type_noInitializer() async { | 878 test_writeLocalVariableDeclaration_type_noInitializer() async { |
881 String path = provider.convertPath('/test.dart'); | 879 String path = provider.convertPath('/test.dart'); |
882 String content = ''' | 880 String content = ''' |
883 void f() { | 881 void f() { |
884 | 882 |
885 } | 883 } |
886 class MyClass {}'''; | 884 class MyClass {}'''; |
887 addSource(path, content); | 885 addSource(path, content); |
888 CompilationUnit unit = (await driver.getResult(path))?.unit; | 886 CompilationUnit unit = (await driver.getResult(path))?.unit; |
889 | 887 |
890 ClassDeclaration A = unit.declarations[1]; | 888 ClassDeclaration A = unit.declarations[1]; |
891 | 889 |
892 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 890 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
893 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 891 await builder.addFileEdit(path, (FileEditBuilder builder) { |
894 builder.addInsertion(11, (EditBuilder builder) { | 892 builder.addInsertion(11, (EditBuilder builder) { |
895 (builder as DartEditBuilder).writeLocalVariableDeclaration('foo', | 893 (builder as DartEditBuilder).writeLocalVariableDeclaration('foo', |
896 type: A.element.type, typeGroupName: 'type'); | 894 type: A.element.type, typeGroupName: 'type'); |
897 }); | 895 }); |
898 }); | 896 }); |
899 SourceEdit edit = getEdit(builder); | 897 SourceEdit edit = getEdit(builder); |
900 expect(edit.replacement, equalsIgnoringWhitespace('MyClass foo;')); | 898 expect(edit.replacement, equalsIgnoringWhitespace('MyClass foo;')); |
901 | 899 |
902 List<LinkedEditGroup> linkedEditGroups = | 900 List<LinkedEditGroup> linkedEditGroups = |
903 builder.sourceChange.linkedEditGroups; | 901 builder.sourceChange.linkedEditGroups; |
904 expect(linkedEditGroups, hasLength(1)); | 902 expect(linkedEditGroups, hasLength(1)); |
905 LinkedEditGroup group = linkedEditGroups[0]; | 903 LinkedEditGroup group = linkedEditGroups[0]; |
906 expect(group.length, 7); | 904 expect(group.length, 7); |
907 expect(group.positions, hasLength(1)); | 905 expect(group.positions, hasLength(1)); |
908 } | 906 } |
909 | 907 |
910 test_writeLocalVariableDeclaration_type_noInitializer_final() async { | 908 test_writeLocalVariableDeclaration_type_noInitializer_final() async { |
911 String path = provider.convertPath('/test.dart'); | 909 String path = provider.convertPath('/test.dart'); |
912 String content = ''' | 910 String content = ''' |
913 void f() { | 911 void f() { |
914 | 912 |
915 } | 913 } |
916 class MyClass {}'''; | 914 class MyClass {}'''; |
917 addSource(path, content); | 915 addSource(path, content); |
918 CompilationUnit unit = (await driver.getResult(path))?.unit; | 916 CompilationUnit unit = (await driver.getResult(path))?.unit; |
919 | 917 |
920 ClassDeclaration A = unit.declarations[1]; | 918 ClassDeclaration A = unit.declarations[1]; |
921 | 919 |
922 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 920 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
923 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 921 await builder.addFileEdit(path, (FileEditBuilder builder) { |
924 builder.addInsertion(11, (EditBuilder builder) { | 922 builder.addInsertion(11, (EditBuilder builder) { |
925 (builder as DartEditBuilder).writeLocalVariableDeclaration('foo', | 923 (builder as DartEditBuilder).writeLocalVariableDeclaration('foo', |
926 isFinal: true, type: A.element.type, typeGroupName: 'type'); | 924 isFinal: true, type: A.element.type, typeGroupName: 'type'); |
927 }); | 925 }); |
928 }); | 926 }); |
929 SourceEdit edit = getEdit(builder); | 927 SourceEdit edit = getEdit(builder); |
930 expect(edit.replacement, equalsIgnoringWhitespace('final MyClass foo;')); | 928 expect(edit.replacement, equalsIgnoringWhitespace('final MyClass foo;')); |
931 | 929 |
932 List<LinkedEditGroup> linkedEditGroups = | 930 List<LinkedEditGroup> linkedEditGroups = |
933 builder.sourceChange.linkedEditGroups; | 931 builder.sourceChange.linkedEditGroups; |
934 expect(linkedEditGroups, hasLength(1)); | 932 expect(linkedEditGroups, hasLength(1)); |
935 LinkedEditGroup group = linkedEditGroups[0]; | 933 LinkedEditGroup group = linkedEditGroups[0]; |
936 expect(group.length, 7); | 934 expect(group.length, 7); |
937 expect(group.positions, hasLength(1)); | 935 expect(group.positions, hasLength(1)); |
938 } | 936 } |
939 | 937 |
940 test_writeOverrideOfInheritedMember() async { | 938 test_writeOverrideOfInheritedMember() async { |
941 String path = provider.convertPath('/test.dart'); | 939 String path = provider.convertPath('/test.dart'); |
942 String content = ''' | 940 String content = ''' |
943 class A { | 941 class A { |
944 A add(A a) => null; | 942 A add(A a) => null; |
945 } | 943 } |
946 class B extends A { | 944 class B extends A { |
947 }'''; | 945 }'''; |
948 addSource(path, content); | 946 addSource(path, content); |
949 ClassElement classA = await _getClassElement(path, 'A'); | 947 ClassElement classA = await _getClassElement(path, 'A'); |
950 | 948 |
951 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 949 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
952 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 950 await builder.addFileEdit(path, (FileEditBuilder builder) { |
953 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 951 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
954 (builder as DartEditBuilder) | 952 (builder as DartEditBuilder) |
955 .writeOverrideOfInheritedMember(classA.methods[0]); | 953 .writeOverrideOfInheritedMember(classA.methods[0]); |
956 }); | 954 }); |
957 }); | 955 }); |
958 SourceEdit edit = getEdit(builder); | 956 SourceEdit edit = getEdit(builder); |
959 expect(edit.replacement, equalsIgnoringWhitespace(''' | 957 expect(edit.replacement, equalsIgnoringWhitespace(''' |
960 @override | 958 @override |
961 A add(A a) { | 959 A add(A a) { |
962 // TODO: implement add | 960 // TODO: implement add |
(...skipping 12 matching lines...) Expand all Loading... |
975 '''; | 973 '''; |
976 addSource(path, content); | 974 addSource(path, content); |
977 CompilationUnit unit = (await driver.getResult(path))?.unit; | 975 CompilationUnit unit = (await driver.getResult(path))?.unit; |
978 FunctionDeclaration g = unit.declarations[1]; | 976 FunctionDeclaration g = unit.declarations[1]; |
979 BlockFunctionBody body = g.functionExpression.body; | 977 BlockFunctionBody body = g.functionExpression.body; |
980 ExpressionStatement statement = body.block.statements[0]; | 978 ExpressionStatement statement = body.block.statements[0]; |
981 MethodInvocation invocation = statement.expression; | 979 MethodInvocation invocation = statement.expression; |
982 Expression argument = invocation.argumentList.arguments[0]; | 980 Expression argument = invocation.argumentList.arguments[0]; |
983 | 981 |
984 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 982 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
985 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 983 await builder.addFileEdit(path, (FileEditBuilder builder) { |
986 builder.addInsertion(2, (EditBuilder builder) { | 984 builder.addInsertion(2, (EditBuilder builder) { |
987 (builder as DartEditBuilder) | 985 (builder as DartEditBuilder) |
988 .writeParameterMatchingArgument(argument, 0, new Set<String>()); | 986 .writeParameterMatchingArgument(argument, 0, new Set<String>()); |
989 }); | 987 }); |
990 }); | 988 }); |
991 SourceEdit edit = getEdit(builder); | 989 SourceEdit edit = getEdit(builder); |
992 expect(edit.replacement, equalsIgnoringWhitespace('A a')); | 990 expect(edit.replacement, equalsIgnoringWhitespace('A a')); |
993 } | 991 } |
994 | 992 |
995 test_writeParameters_named() async { | 993 test_writeParameters_named() async { |
996 String path = provider.convertPath('/test.dart'); | 994 String path = provider.convertPath('/test.dart'); |
997 String content = 'f(int i, {String s}) {}'; | 995 String content = 'f(int i, {String s}) {}'; |
998 addSource(path, content); | 996 addSource(path, content); |
999 | 997 |
1000 CompilationUnit unit = (await driver.getResult(path))?.unit; | 998 CompilationUnit unit = (await driver.getResult(path))?.unit; |
1001 FunctionDeclaration f = unit.declarations[0]; | 999 FunctionDeclaration f = unit.declarations[0]; |
1002 FormalParameterList parameters = f.functionExpression.parameters; | 1000 FormalParameterList parameters = f.functionExpression.parameters; |
1003 Iterable<ParameterElement> elements = parameters.parameters | 1001 Iterable<ParameterElement> elements = parameters.parameters |
1004 .map(resolutionMap.elementDeclaredByFormalParameter); | 1002 .map(resolutionMap.elementDeclaredByFormalParameter); |
1005 | 1003 |
1006 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1004 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1007 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1005 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1008 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1006 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1009 (builder as DartEditBuilder).writeParameters(elements); | 1007 (builder as DartEditBuilder).writeParameters(elements); |
1010 }); | 1008 }); |
1011 }); | 1009 }); |
1012 SourceEdit edit = getEdit(builder); | 1010 SourceEdit edit = getEdit(builder); |
1013 expect(edit.replacement, equalsIgnoringWhitespace('(int i, {String s})')); | 1011 expect(edit.replacement, equalsIgnoringWhitespace('(int i, {String s})')); |
1014 } | 1012 } |
1015 | 1013 |
1016 test_writeParameters_positional() async { | 1014 test_writeParameters_positional() async { |
1017 String path = provider.convertPath('/test.dart'); | 1015 String path = provider.convertPath('/test.dart'); |
1018 String content = 'f(int i, [String s]) {}'; | 1016 String content = 'f(int i, [String s]) {}'; |
1019 addSource(path, content); | 1017 addSource(path, content); |
1020 CompilationUnit unit = (await driver.getResult(path))?.unit; | 1018 CompilationUnit unit = (await driver.getResult(path))?.unit; |
1021 FunctionDeclaration f = unit.declarations[0]; | 1019 FunctionDeclaration f = unit.declarations[0]; |
1022 FormalParameterList parameters = f.functionExpression.parameters; | 1020 FormalParameterList parameters = f.functionExpression.parameters; |
1023 Iterable<ParameterElement> elements = parameters.parameters | 1021 Iterable<ParameterElement> elements = parameters.parameters |
1024 .map(resolutionMap.elementDeclaredByFormalParameter); | 1022 .map(resolutionMap.elementDeclaredByFormalParameter); |
1025 | 1023 |
1026 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1024 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1027 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1025 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1028 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1026 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1029 (builder as DartEditBuilder).writeParameters(elements); | 1027 (builder as DartEditBuilder).writeParameters(elements); |
1030 }); | 1028 }); |
1031 }); | 1029 }); |
1032 SourceEdit edit = getEdit(builder); | 1030 SourceEdit edit = getEdit(builder); |
1033 expect(edit.replacement, equalsIgnoringWhitespace('(int i, [String s])')); | 1031 expect(edit.replacement, equalsIgnoringWhitespace('(int i, [String s])')); |
1034 } | 1032 } |
1035 | 1033 |
1036 test_writeParameters_required() async { | 1034 test_writeParameters_required() async { |
1037 String path = provider.convertPath('/test.dart'); | 1035 String path = provider.convertPath('/test.dart'); |
1038 String content = 'f(int i, String s) {}'; | 1036 String content = 'f(int i, String s) {}'; |
1039 addSource(path, content); | 1037 addSource(path, content); |
1040 CompilationUnit unit = (await driver.getResult(path))?.unit; | 1038 CompilationUnit unit = (await driver.getResult(path))?.unit; |
1041 FunctionDeclaration f = unit.declarations[0]; | 1039 FunctionDeclaration f = unit.declarations[0]; |
1042 FormalParameterList parameters = f.functionExpression.parameters; | 1040 FormalParameterList parameters = f.functionExpression.parameters; |
1043 Iterable<ParameterElement> elements = parameters.parameters | 1041 Iterable<ParameterElement> elements = parameters.parameters |
1044 .map(resolutionMap.elementDeclaredByFormalParameter); | 1042 .map(resolutionMap.elementDeclaredByFormalParameter); |
1045 | 1043 |
1046 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1044 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1047 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1045 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1048 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1046 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1049 (builder as DartEditBuilder).writeParameters(elements); | 1047 (builder as DartEditBuilder).writeParameters(elements); |
1050 }); | 1048 }); |
1051 }); | 1049 }); |
1052 SourceEdit edit = getEdit(builder); | 1050 SourceEdit edit = getEdit(builder); |
1053 expect(edit.replacement, equalsIgnoringWhitespace('(int i, String s)')); | 1051 expect(edit.replacement, equalsIgnoringWhitespace('(int i, String s)')); |
1054 } | 1052 } |
1055 | 1053 |
1056 test_writeParametersMatchingArguments_named() async { | 1054 test_writeParametersMatchingArguments_named() async { |
1057 String path = provider.convertPath('/test.dart'); | 1055 String path = provider.convertPath('/test.dart'); |
1058 String content = ''' | 1056 String content = ''' |
1059 f(int i, String s) { | 1057 f(int i, String s) { |
1060 g(s, index: i); | 1058 g(s, index: i); |
1061 }'''; | 1059 }'''; |
1062 addSource(path, content); | 1060 addSource(path, content); |
1063 CompilationUnit unit = (await driver.getResult(path))?.unit; | 1061 CompilationUnit unit = (await driver.getResult(path))?.unit; |
1064 FunctionDeclaration f = unit.declarations[0]; | 1062 FunctionDeclaration f = unit.declarations[0]; |
1065 BlockFunctionBody body = f.functionExpression.body; | 1063 BlockFunctionBody body = f.functionExpression.body; |
1066 ExpressionStatement statement = body.block.statements[0]; | 1064 ExpressionStatement statement = body.block.statements[0]; |
1067 MethodInvocation invocation = statement.expression; | 1065 MethodInvocation invocation = statement.expression; |
1068 | 1066 |
1069 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1067 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1070 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1068 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1071 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1069 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1072 (builder as DartEditBuilder) | 1070 (builder as DartEditBuilder) |
1073 .writeParametersMatchingArguments(invocation.argumentList); | 1071 .writeParametersMatchingArguments(invocation.argumentList); |
1074 }); | 1072 }); |
1075 }); | 1073 }); |
1076 SourceEdit edit = getEdit(builder); | 1074 SourceEdit edit = getEdit(builder); |
1077 expect(edit.replacement, equalsIgnoringWhitespace('String s, {int index}')); | 1075 expect(edit.replacement, equalsIgnoringWhitespace('String s, {int index}')); |
1078 } | 1076 } |
1079 | 1077 |
1080 test_writeParametersMatchingArguments_required() async { | 1078 test_writeParametersMatchingArguments_required() async { |
1081 String path = provider.convertPath('/test.dart'); | 1079 String path = provider.convertPath('/test.dart'); |
1082 String content = ''' | 1080 String content = ''' |
1083 f(int i, String s) { | 1081 f(int i, String s) { |
1084 g(s, i); | 1082 g(s, i); |
1085 }'''; | 1083 }'''; |
1086 addSource(path, content); | 1084 addSource(path, content); |
1087 CompilationUnit unit = (await driver.getResult(path))?.unit; | 1085 CompilationUnit unit = (await driver.getResult(path))?.unit; |
1088 FunctionDeclaration f = unit.declarations[0]; | 1086 FunctionDeclaration f = unit.declarations[0]; |
1089 BlockFunctionBody body = f.functionExpression.body; | 1087 BlockFunctionBody body = f.functionExpression.body; |
1090 ExpressionStatement statement = body.block.statements[0]; | 1088 ExpressionStatement statement = body.block.statements[0]; |
1091 MethodInvocation invocation = statement.expression; | 1089 MethodInvocation invocation = statement.expression; |
1092 | 1090 |
1093 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1091 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1094 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1092 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1095 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1093 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1096 (builder as DartEditBuilder) | 1094 (builder as DartEditBuilder) |
1097 .writeParametersMatchingArguments(invocation.argumentList); | 1095 .writeParametersMatchingArguments(invocation.argumentList); |
1098 }); | 1096 }); |
1099 }); | 1097 }); |
1100 SourceEdit edit = getEdit(builder); | 1098 SourceEdit edit = getEdit(builder); |
1101 expect(edit.replacement, equalsIgnoringWhitespace('String s, int i')); | 1099 expect(edit.replacement, equalsIgnoringWhitespace('String s, int i')); |
1102 } | 1100 } |
1103 | 1101 |
1104 test_writeParameterSource() async { | 1102 test_writeParameterSource() async { |
1105 String path = provider.convertPath('/test.dart'); | 1103 String path = provider.convertPath('/test.dart'); |
1106 String content = 'class A {}'; | 1104 String content = 'class A {}'; |
1107 addSource(path, content); | 1105 addSource(path, content); |
1108 DartType typeA = await _getType(path, 'A'); | 1106 DartType typeA = await _getType(path, 'A'); |
1109 | 1107 |
1110 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1108 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1111 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1109 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1112 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1110 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1113 (builder as DartEditBuilder).writeParameterSource(typeA, 'a'); | 1111 (builder as DartEditBuilder).writeParameterSource(typeA, 'a'); |
1114 }); | 1112 }); |
1115 }); | 1113 }); |
1116 SourceEdit edit = getEdit(builder); | 1114 SourceEdit edit = getEdit(builder); |
1117 expect(edit.replacement, equalsIgnoringWhitespace('A a')); | 1115 expect(edit.replacement, equalsIgnoringWhitespace('A a')); |
1118 } | 1116 } |
1119 | 1117 |
1120 test_writeType_dynamic() async { | 1118 test_writeType_dynamic() async { |
1121 String path = provider.convertPath('/test.dart'); | 1119 String path = provider.convertPath('/test.dart'); |
1122 String content = 'class A {}'; | 1120 String content = 'class A {}'; |
1123 addSource(path, content); | 1121 addSource(path, content); |
1124 CompilationUnit unit = (await driver.getResult(path))?.unit; | 1122 CompilationUnit unit = (await driver.getResult(path))?.unit; |
1125 | 1123 |
1126 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1124 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1127 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1125 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1128 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1126 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1129 (builder as DartEditBuilder).writeType(resolutionMap | 1127 (builder as DartEditBuilder).writeType(resolutionMap |
1130 .elementDeclaredByCompilationUnit(unit) | 1128 .elementDeclaredByCompilationUnit(unit) |
1131 .context | 1129 .context |
1132 .typeProvider | 1130 .typeProvider |
1133 .dynamicType); | 1131 .dynamicType); |
1134 }); | 1132 }); |
1135 }); | 1133 }); |
1136 SourceEdit edit = getEdit(builder); | 1134 SourceEdit edit = getEdit(builder); |
1137 expect(edit.replacement, equalsIgnoringWhitespace('')); | 1135 expect(edit.replacement, equalsIgnoringWhitespace('')); |
1138 } | 1136 } |
1139 | 1137 |
1140 test_writeType_genericType() async { | 1138 test_writeType_genericType() async { |
1141 String path = provider.convertPath('/test.dart'); | 1139 String path = provider.convertPath('/test.dart'); |
1142 String content = 'class A {} class B<E> {}'; | 1140 String content = 'class A {} class B<E> {}'; |
1143 addSource(path, content); | 1141 addSource(path, content); |
1144 InterfaceType typeA = await _getType(path, 'A'); | 1142 InterfaceType typeA = await _getType(path, 'A'); |
1145 InterfaceType typeB = await _getType(path, 'B'); | 1143 InterfaceType typeB = await _getType(path, 'B'); |
1146 | 1144 |
1147 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1145 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1148 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1146 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1149 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1147 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1150 (builder as DartEditBuilder).writeType(typeB.instantiate([typeA])); | 1148 (builder as DartEditBuilder).writeType(typeB.instantiate([typeA])); |
1151 }); | 1149 }); |
1152 }); | 1150 }); |
1153 SourceEdit edit = getEdit(builder); | 1151 SourceEdit edit = getEdit(builder); |
1154 expect(edit.replacement, equalsIgnoringWhitespace('B<A>')); | 1152 expect(edit.replacement, equalsIgnoringWhitespace('B<A>')); |
1155 } | 1153 } |
1156 | 1154 |
1157 test_writeType_groupName() async { | 1155 test_writeType_groupName() async { |
1158 String path = provider.convertPath('/test.dart'); | 1156 String path = provider.convertPath('/test.dart'); |
1159 String content = 'class A {} class B extends A {} class C extends B {}'; | 1157 String content = 'class A {} class B extends A {} class C extends B {}'; |
1160 addSource(path, content); | 1158 addSource(path, content); |
1161 DartType typeC = await _getType(path, 'C'); | 1159 DartType typeC = await _getType(path, 'C'); |
1162 | 1160 |
1163 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1161 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1164 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1162 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1165 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1163 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1166 (builder as DartEditBuilder).writeType(typeC, groupName: 'type'); | 1164 (builder as DartEditBuilder).writeType(typeC, groupName: 'type'); |
1167 }); | 1165 }); |
1168 }); | 1166 }); |
1169 SourceEdit edit = getEdit(builder); | 1167 SourceEdit edit = getEdit(builder); |
1170 expect(edit.replacement, equalsIgnoringWhitespace('C')); | 1168 expect(edit.replacement, equalsIgnoringWhitespace('C')); |
1171 | 1169 |
1172 List<LinkedEditGroup> linkedEditGroups = | 1170 List<LinkedEditGroup> linkedEditGroups = |
1173 builder.sourceChange.linkedEditGroups; | 1171 builder.sourceChange.linkedEditGroups; |
1174 expect(linkedEditGroups, hasLength(1)); | 1172 expect(linkedEditGroups, hasLength(1)); |
1175 LinkedEditGroup group = linkedEditGroups[0]; | 1173 LinkedEditGroup group = linkedEditGroups[0]; |
1176 expect(group, isNotNull); | 1174 expect(group, isNotNull); |
1177 } | 1175 } |
1178 | 1176 |
1179 test_writeType_groupName_addSupertypeProposals() async { | 1177 test_writeType_groupName_addSupertypeProposals() async { |
1180 String path = provider.convertPath('/test.dart'); | 1178 String path = provider.convertPath('/test.dart'); |
1181 String content = 'class A {} class B extends A {} class C extends B {}'; | 1179 String content = 'class A {} class B extends A {} class C extends B {}'; |
1182 addSource(path, content); | 1180 addSource(path, content); |
1183 DartType typeC = await _getType(path, 'C'); | 1181 DartType typeC = await _getType(path, 'C'); |
1184 | 1182 |
1185 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1183 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1186 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1184 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1187 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1185 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1188 (builder as DartEditBuilder) | 1186 (builder as DartEditBuilder) |
1189 .writeType(typeC, addSupertypeProposals: true, groupName: 'type'); | 1187 .writeType(typeC, addSupertypeProposals: true, groupName: 'type'); |
1190 }); | 1188 }); |
1191 }); | 1189 }); |
1192 SourceEdit edit = getEdit(builder); | 1190 SourceEdit edit = getEdit(builder); |
1193 expect(edit.replacement, equalsIgnoringWhitespace('C')); | 1191 expect(edit.replacement, equalsIgnoringWhitespace('C')); |
1194 | 1192 |
1195 List<LinkedEditGroup> linkedEditGroups = | 1193 List<LinkedEditGroup> linkedEditGroups = |
1196 builder.sourceChange.linkedEditGroups; | 1194 builder.sourceChange.linkedEditGroups; |
(...skipping 11 matching lines...) Expand all Loading... |
1208 expect(values, contains('B')); | 1206 expect(values, contains('B')); |
1209 expect(values, contains('C')); | 1207 expect(values, contains('C')); |
1210 } | 1208 } |
1211 | 1209 |
1212 test_writeType_null() async { | 1210 test_writeType_null() async { |
1213 String path = provider.convertPath('/test.dart'); | 1211 String path = provider.convertPath('/test.dart'); |
1214 String content = 'class A {}'; | 1212 String content = 'class A {}'; |
1215 addSource(path, content); | 1213 addSource(path, content); |
1216 | 1214 |
1217 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1215 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1218 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1216 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1219 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1217 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1220 (builder as DartEditBuilder).writeType(null); | 1218 (builder as DartEditBuilder).writeType(null); |
1221 }); | 1219 }); |
1222 }); | 1220 }); |
1223 SourceEdit edit = getEdit(builder); | 1221 SourceEdit edit = getEdit(builder); |
1224 expect(edit.replacement, equalsIgnoringWhitespace('')); | 1222 expect(edit.replacement, equalsIgnoringWhitespace('')); |
1225 } | 1223 } |
1226 | 1224 |
1227 test_writeType_required_dynamic() async { | 1225 test_writeType_required_dynamic() async { |
1228 String path = provider.convertPath('/test.dart'); | 1226 String path = provider.convertPath('/test.dart'); |
1229 String content = 'class A {}'; | 1227 String content = 'class A {}'; |
1230 addSource(path, content); | 1228 addSource(path, content); |
1231 CompilationUnit unit = (await driver.getResult(path))?.unit; | 1229 CompilationUnit unit = (await driver.getResult(path))?.unit; |
1232 | 1230 |
1233 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1231 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1234 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1232 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1235 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1233 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1236 (builder as DartEditBuilder).writeType( | 1234 (builder as DartEditBuilder).writeType( |
1237 resolutionMap | 1235 resolutionMap |
1238 .elementDeclaredByCompilationUnit(unit) | 1236 .elementDeclaredByCompilationUnit(unit) |
1239 .context | 1237 .context |
1240 .typeProvider | 1238 .typeProvider |
1241 .dynamicType, | 1239 .dynamicType, |
1242 required: true); | 1240 required: true); |
1243 }); | 1241 }); |
1244 }); | 1242 }); |
1245 SourceEdit edit = getEdit(builder); | 1243 SourceEdit edit = getEdit(builder); |
1246 expect(edit.replacement, equalsIgnoringWhitespace('var')); | 1244 expect(edit.replacement, equalsIgnoringWhitespace('var')); |
1247 } | 1245 } |
1248 | 1246 |
1249 test_writeType_required_notNull() async { | 1247 test_writeType_required_notNull() async { |
1250 String path = provider.convertPath('/test.dart'); | 1248 String path = provider.convertPath('/test.dart'); |
1251 String content = 'class A {}'; | 1249 String content = 'class A {}'; |
1252 addSource(path, content); | 1250 addSource(path, content); |
1253 DartType typeA = await _getType(path, 'A'); | 1251 DartType typeA = await _getType(path, 'A'); |
1254 | 1252 |
1255 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1253 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1256 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1254 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1257 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1255 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1258 (builder as DartEditBuilder).writeType(typeA, required: true); | 1256 (builder as DartEditBuilder).writeType(typeA, required: true); |
1259 }); | 1257 }); |
1260 }); | 1258 }); |
1261 SourceEdit edit = getEdit(builder); | 1259 SourceEdit edit = getEdit(builder); |
1262 expect(edit.replacement, equalsIgnoringWhitespace('A')); | 1260 expect(edit.replacement, equalsIgnoringWhitespace('A')); |
1263 } | 1261 } |
1264 | 1262 |
1265 test_writeType_required_null() async { | 1263 test_writeType_required_null() async { |
1266 String path = provider.convertPath('/test.dart'); | 1264 String path = provider.convertPath('/test.dart'); |
1267 String content = 'class A {}'; | 1265 String content = 'class A {}'; |
1268 addSource(path, content); | 1266 addSource(path, content); |
1269 | 1267 |
1270 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1268 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1271 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1269 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1272 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1270 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1273 (builder as DartEditBuilder).writeType(null, required: true); | 1271 (builder as DartEditBuilder).writeType(null, required: true); |
1274 }); | 1272 }); |
1275 }); | 1273 }); |
1276 SourceEdit edit = getEdit(builder); | 1274 SourceEdit edit = getEdit(builder); |
1277 expect(edit.replacement, equalsIgnoringWhitespace('var')); | 1275 expect(edit.replacement, equalsIgnoringWhitespace('var')); |
1278 } | 1276 } |
1279 | 1277 |
1280 test_writeType_simpleType() async { | 1278 test_writeType_simpleType() async { |
1281 String path = provider.convertPath('/test.dart'); | 1279 String path = provider.convertPath('/test.dart'); |
1282 String content = 'class A {}'; | 1280 String content = 'class A {}'; |
1283 addSource(path, content); | 1281 addSource(path, content); |
1284 DartType typeA = await _getType(path, 'A'); | 1282 DartType typeA = await _getType(path, 'A'); |
1285 | 1283 |
1286 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1284 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1287 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1285 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1288 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1286 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1289 (builder as DartEditBuilder).writeType(typeA); | 1287 (builder as DartEditBuilder).writeType(typeA); |
1290 }); | 1288 }); |
1291 }); | 1289 }); |
1292 SourceEdit edit = getEdit(builder); | 1290 SourceEdit edit = getEdit(builder); |
1293 expect(edit.replacement, equalsIgnoringWhitespace('A')); | 1291 expect(edit.replacement, equalsIgnoringWhitespace('A')); |
1294 } | 1292 } |
1295 | 1293 |
1296 test_writeTypes_empty() async { | 1294 test_writeTypes_empty() async { |
1297 String path = provider.convertPath('/test.dart'); | 1295 String path = provider.convertPath('/test.dart'); |
1298 String content = 'class A {}'; | 1296 String content = 'class A {}'; |
1299 addSource(path, content); | 1297 addSource(path, content); |
1300 | 1298 |
1301 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1299 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1302 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1300 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1303 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1301 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1304 (builder as DartEditBuilderImpl).writeTypes([]); | 1302 (builder as DartEditBuilderImpl).writeTypes([]); |
1305 }); | 1303 }); |
1306 }); | 1304 }); |
1307 SourceEdit edit = getEdit(builder); | 1305 SourceEdit edit = getEdit(builder); |
1308 expect(edit.replacement, isEmpty); | 1306 expect(edit.replacement, isEmpty); |
1309 } | 1307 } |
1310 | 1308 |
1311 test_writeTypes_noPrefix() async { | 1309 test_writeTypes_noPrefix() async { |
1312 String path = provider.convertPath('/test.dart'); | 1310 String path = provider.convertPath('/test.dart'); |
1313 String content = 'class A {} class B {}'; | 1311 String content = 'class A {} class B {}'; |
1314 addSource(path, content); | 1312 addSource(path, content); |
1315 DartType typeA = await _getType(path, 'A'); | 1313 DartType typeA = await _getType(path, 'A'); |
1316 DartType typeB = await _getType(path, 'B'); | 1314 DartType typeB = await _getType(path, 'B'); |
1317 | 1315 |
1318 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1316 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1319 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1317 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1320 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1318 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1321 (builder as DartEditBuilderImpl).writeTypes([typeA, typeB]); | 1319 (builder as DartEditBuilderImpl).writeTypes([typeA, typeB]); |
1322 }); | 1320 }); |
1323 }); | 1321 }); |
1324 SourceEdit edit = getEdit(builder); | 1322 SourceEdit edit = getEdit(builder); |
1325 expect(edit.replacement, equalsIgnoringWhitespace('A, B')); | 1323 expect(edit.replacement, equalsIgnoringWhitespace('A, B')); |
1326 } | 1324 } |
1327 | 1325 |
1328 test_writeTypes_null() async { | 1326 test_writeTypes_null() async { |
1329 String path = provider.convertPath('/test.dart'); | 1327 String path = provider.convertPath('/test.dart'); |
1330 String content = 'class A {}'; | 1328 String content = 'class A {}'; |
1331 addSource(path, content); | 1329 addSource(path, content); |
1332 | 1330 |
1333 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1331 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1334 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1332 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1335 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1333 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1336 (builder as DartEditBuilderImpl).writeTypes(null); | 1334 (builder as DartEditBuilderImpl).writeTypes(null); |
1337 }); | 1335 }); |
1338 }); | 1336 }); |
1339 SourceEdit edit = getEdit(builder); | 1337 SourceEdit edit = getEdit(builder); |
1340 expect(edit.replacement, isEmpty); | 1338 expect(edit.replacement, isEmpty); |
1341 } | 1339 } |
1342 | 1340 |
1343 test_writeTypes_prefix() async { | 1341 test_writeTypes_prefix() async { |
1344 String path = provider.convertPath('/test.dart'); | 1342 String path = provider.convertPath('/test.dart'); |
1345 String content = 'class A {} class B {}'; | 1343 String content = 'class A {} class B {}'; |
1346 addSource(path, content); | 1344 addSource(path, content); |
1347 DartType typeA = await _getType(path, 'A'); | 1345 DartType typeA = await _getType(path, 'A'); |
1348 DartType typeB = await _getType(path, 'B'); | 1346 DartType typeB = await _getType(path, 'B'); |
1349 | 1347 |
1350 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1348 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1351 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1349 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1352 builder.addInsertion(content.length - 1, (EditBuilder builder) { | 1350 builder.addInsertion(content.length - 1, (EditBuilder builder) { |
1353 (builder as DartEditBuilderImpl) | 1351 (builder as DartEditBuilderImpl) |
1354 .writeTypes([typeA, typeB], prefix: 'implements '); | 1352 .writeTypes([typeA, typeB], prefix: 'implements '); |
1355 }); | 1353 }); |
1356 }); | 1354 }); |
1357 SourceEdit edit = getEdit(builder); | 1355 SourceEdit edit = getEdit(builder); |
1358 expect(edit.replacement, equalsIgnoringWhitespace('implements A, B')); | 1356 expect(edit.replacement, equalsIgnoringWhitespace('implements A, B')); |
1359 } | 1357 } |
1360 | 1358 |
1361 Future<Null> _assertImportLibraries( | 1359 Future<Null> _assertImportLibraries( |
1362 String initialCode, List<String> newUris, String expectedCode) async { | 1360 String initialCode, List<String> newUris, String expectedCode) async { |
1363 String path = provider.convertPath('/test.dart'); | 1361 String path = provider.convertPath('/test.dart'); |
1364 addSource(path, initialCode); | 1362 addSource(path, initialCode); |
1365 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1363 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1366 await builder.addFileEdit(path, 1, (DartFileEditBuilder builder) { | 1364 await builder.addFileEdit(path, (DartFileEditBuilder builder) { |
1367 Iterable<_MockSource> sources = newUris.map((newUri) { | 1365 Iterable<_MockSource> sources = newUris.map((newUri) { |
1368 String path = | 1366 String path = |
1369 newUri.contains(':') ? null : provider.convertPath('/$newUri'); | 1367 newUri.contains(':') ? null : provider.convertPath('/$newUri'); |
1370 return new _MockSource(path, Uri.parse(newUri)); | 1368 return new _MockSource(path, Uri.parse(newUri)); |
1371 }); | 1369 }); |
1372 builder.importLibraries(sources); | 1370 builder.importLibraries(sources); |
1373 }); | 1371 }); |
1374 | 1372 |
1375 String resultCode = initialCode; | 1373 String resultCode = initialCode; |
1376 List<SourceEdit> edits = getEdits(builder); | 1374 List<SourceEdit> edits = getEdits(builder); |
(...skipping 25 matching lines...) Expand all Loading... |
1402 | 1400 |
1403 test_convertFunctionFromSyncToAsync() async { | 1401 test_convertFunctionFromSyncToAsync() async { |
1404 String path = provider.convertPath('/test.dart'); | 1402 String path = provider.convertPath('/test.dart'); |
1405 addSource(path, 'String f() {}'); | 1403 addSource(path, 'String f() {}'); |
1406 | 1404 |
1407 CompilationUnit unit = (await driver.getResult(path))?.unit; | 1405 CompilationUnit unit = (await driver.getResult(path))?.unit; |
1408 FunctionDeclaration function = unit.declarations[0]; | 1406 FunctionDeclaration function = unit.declarations[0]; |
1409 FunctionBody body = function.functionExpression.body; | 1407 FunctionBody body = function.functionExpression.body; |
1410 | 1408 |
1411 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1409 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1412 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1410 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1413 (builder as DartFileEditBuilder) | 1411 (builder as DartFileEditBuilder) |
1414 .convertFunctionFromSyncToAsync(body, typeProvider); | 1412 .convertFunctionFromSyncToAsync(body, typeProvider); |
1415 }); | 1413 }); |
1416 List<SourceEdit> edits = getEdits(builder); | 1414 List<SourceEdit> edits = getEdits(builder); |
1417 expect(edits, hasLength(3)); | 1415 expect(edits, hasLength(3)); |
1418 expect(edits[0].replacement, equalsIgnoringWhitespace('async')); | 1416 expect(edits[0].replacement, equalsIgnoringWhitespace('async')); |
1419 expect( | 1417 expect( |
1420 edits[1].replacement, equalsIgnoringWhitespace("import 'dart:async';")); | 1418 edits[1].replacement, equalsIgnoringWhitespace("import 'dart:async';")); |
1421 expect(edits[2].replacement, equalsIgnoringWhitespace('Future<String>')); | 1419 expect(edits[2].replacement, equalsIgnoringWhitespace('Future<String>')); |
1422 } | 1420 } |
1423 | 1421 |
1424 test_createEditBuilder() async { | 1422 test_createEditBuilder() async { |
1425 String path = provider.convertPath('/test.dart'); | 1423 String path = provider.convertPath('/test.dart'); |
1426 addSource(path, 'library test;'); | 1424 addSource(path, 'library test;'); |
1427 int timeStamp = 65; | |
1428 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1425 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1429 await builder.addFileEdit(path, timeStamp, (FileEditBuilder builder) { | 1426 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1430 int offset = 4; | 1427 int offset = 4; |
1431 int length = 5; | 1428 int length = 5; |
1432 DartEditBuilderImpl editBuilder = (builder as DartFileEditBuilderImpl) | 1429 DartEditBuilderImpl editBuilder = (builder as DartFileEditBuilderImpl) |
1433 .createEditBuilder(offset, length); | 1430 .createEditBuilder(offset, length); |
1434 expect(editBuilder, new isInstanceOf<DartEditBuilder>()); | 1431 expect(editBuilder, new isInstanceOf<DartEditBuilder>()); |
1435 SourceEdit sourceEdit = editBuilder.sourceEdit; | 1432 SourceEdit sourceEdit = editBuilder.sourceEdit; |
1436 expect(sourceEdit.length, length); | 1433 expect(sourceEdit.length, length); |
1437 expect(sourceEdit.offset, offset); | 1434 expect(sourceEdit.offset, offset); |
1438 expect(sourceEdit.replacement, isEmpty); | 1435 expect(sourceEdit.replacement, isEmpty); |
1439 }); | 1436 }); |
1440 } | 1437 } |
1441 | 1438 |
1442 test_replaceTypeWithFuture() async { | 1439 test_replaceTypeWithFuture() async { |
1443 String path = provider.convertPath('/test.dart'); | 1440 String path = provider.convertPath('/test.dart'); |
1444 addSource(path, 'String f() {}'); | 1441 addSource(path, 'String f() {}'); |
1445 | 1442 |
1446 CompilationUnit unit = (await driver.getResult(path))?.unit; | 1443 CompilationUnit unit = (await driver.getResult(path))?.unit; |
1447 FunctionDeclaration function = unit.declarations[0]; | 1444 FunctionDeclaration function = unit.declarations[0]; |
1448 TypeAnnotation type = function.returnType; | 1445 TypeAnnotation type = function.returnType; |
1449 | 1446 |
1450 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); | 1447 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); |
1451 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { | 1448 await builder.addFileEdit(path, (FileEditBuilder builder) { |
1452 (builder as DartFileEditBuilder) | 1449 (builder as DartFileEditBuilder) |
1453 .replaceTypeWithFuture(type, typeProvider); | 1450 .replaceTypeWithFuture(type, typeProvider); |
1454 }); | 1451 }); |
1455 List<SourceEdit> edits = getEdits(builder); | 1452 List<SourceEdit> edits = getEdits(builder); |
1456 expect(edits, hasLength(2)); | 1453 expect(edits, hasLength(2)); |
1457 expect( | 1454 expect( |
1458 edits[0].replacement, equalsIgnoringWhitespace("import 'dart:async';")); | 1455 edits[0].replacement, equalsIgnoringWhitespace("import 'dart:async';")); |
1459 expect(edits[1].replacement, equalsIgnoringWhitespace('Future<String>')); | 1456 expect(edits[1].replacement, equalsIgnoringWhitespace('Future<String>')); |
1460 } | 1457 } |
1461 } | 1458 } |
(...skipping 25 matching lines...) Expand all Loading... |
1487 final String fullName; | 1484 final String fullName; |
1488 | 1485 |
1489 @override | 1486 @override |
1490 final Uri uri; | 1487 final Uri uri; |
1491 | 1488 |
1492 _MockSource(this.fullName, this.uri); | 1489 _MockSource(this.fullName, this.uri); |
1493 | 1490 |
1494 @override | 1491 @override |
1495 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 1492 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
1496 } | 1493 } |
OLD | NEW |