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 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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |