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

Side by Side Diff: pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart

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

Powered by Google App Engine
This is Rietveld 408576698