| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library test.services.correction.assist; | 5 library test.services.correction.assist; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/plugin/edit/assist/assist_core.dart'; | 9 import 'package:analysis_server/plugin/edit/assist/assist_core.dart'; |
| 10 import 'package:analysis_server/plugin/edit/assist/assist_dart.dart'; | 10 import 'package:analysis_server/plugin/edit/assist/assist_dart.dart'; |
| 11 import 'package:analysis_server/plugin/protocol/protocol.dart'; | 11 import 'package:analysis_server/plugin/protocol/protocol.dart'; |
| 12 import 'package:analysis_server/src/plugin/server_plugin.dart'; | 12 import 'package:analysis_server/src/plugin/server_plugin.dart'; |
| 13 import 'package:analysis_server/src/services/correction/assist.dart'; | 13 import 'package:analysis_server/src/services/correction/assist.dart'; |
| 14 import 'package:analysis_server/src/services/correction/assist_internal.dart'; | 14 import 'package:analysis_server/src/services/correction/assist_internal.dart'; |
| 15 import 'package:analyzer/dart/ast/ast.dart'; | 15 import 'package:analyzer/dart/ast/ast.dart'; |
| 16 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; | 16 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; |
| 17 import 'package:analyzer/dart/element/element.dart'; | 17 import 'package:analyzer/dart/element/element.dart'; |
| 18 import 'package:analyzer/file_system/file_system.dart'; | 18 import 'package:analyzer/file_system/file_system.dart'; |
| 19 import 'package:analyzer/source/package_map_resolver.dart'; | 19 import 'package:analyzer/source/package_map_resolver.dart'; |
| 20 import 'package:analyzer/src/generated/engine.dart'; | 20 import 'package:analyzer/src/generated/engine.dart'; |
| 21 import 'package:analyzer/src/generated/source.dart'; | 21 import 'package:analyzer/src/generated/source.dart'; |
| 22 import 'package:plugin/manager.dart'; | 22 import 'package:plugin/manager.dart'; |
| 23 import 'package:plugin/plugin.dart'; | 23 import 'package:plugin/plugin.dart'; |
| 24 import 'package:test/test.dart'; | 24 import 'package:test/test.dart'; |
| 25 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 25 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 26 | 26 |
| 27 import '../../abstract_single_unit.dart'; | 27 import '../../abstract_single_unit.dart'; |
| 28 import 'flutter_util.dart'; |
| 28 | 29 |
| 29 main() { | 30 main() { |
| 30 defineReflectiveSuite(() { | 31 defineReflectiveSuite(() { |
| 31 defineReflectiveTests(AssistProcessorTest); | 32 defineReflectiveTests(AssistProcessorTest); |
| 32 defineReflectiveTests(AssistProcessorTest_Driver); | 33 defineReflectiveTests(AssistProcessorTest_Driver); |
| 33 }); | 34 }); |
| 34 } | 35 } |
| 35 | 36 |
| 36 @reflectiveTest | 37 @reflectiveTest |
| 37 class AssistProcessorTest extends AbstractSingleUnitTest { | 38 class AssistProcessorTest extends AbstractSingleUnitTest { |
| 38 int offset; | 39 int offset; |
| 39 int length; | 40 int length; |
| 40 | 41 |
| 41 ServerPlugin plugin; | 42 ServerPlugin plugin; |
| 42 Assist assist; | 43 Assist assist; |
| 43 SourceChange change; | 44 SourceChange change; |
| 44 String resultCode; | 45 String resultCode; |
| 45 LinkedEditGroup linkedPositionGroup; | 46 LinkedEditGroup linkedPositionGroup; |
| 46 | 47 |
| 47 String flutterPkgLibPath = '/packages/flutter/lib'; | |
| 48 | |
| 49 String get _flutter_framework_code => ''' | |
| 50 class Widget {} | |
| 51 class RenderObjectWidget extends Widget {} | |
| 52 class StatelessWidget extends Widget {} | |
| 53 class SingleChildRenderObjectWidget extends RenderObjectWidget {} | |
| 54 class Transform extends SingleChildRenderObjectWidget {} | |
| 55 class ClipRect extends SingleChildRenderObjectWidget { ClipRect.rect(){} } | |
| 56 class AspectRatio extends SingleChildRenderObjectWidget {} | |
| 57 class Container extends StatelessWidget { Container({child: null, width: null, h
eight: null}){}} | |
| 58 class Center extends StatelessWidget { Center({child: null, key: null}){}} | |
| 59 class DefaultTextStyle extends StatelessWidget { DefaultTextStyle({child: null})
{}} | |
| 60 class Row extends Widget { Row({children: null}){}} | |
| 61 class GestureDetector extends SingleChildRenderObjectWidget { GestureDetector({c
hild: null, onTap: null}){}} | |
| 62 class Scaffold extends Widget { Scaffold({body: null}){}} | |
| 63 '''; | |
| 64 | |
| 65 /** | 48 /** |
| 66 * Asserts that there is an [Assist] of the given [kind] at [offset] which | 49 * Asserts that there is an [Assist] of the given [kind] at [offset] which |
| 67 * produces the [expected] code when applied to [testCode]. | 50 * produces the [expected] code when applied to [testCode]. |
| 68 */ | 51 */ |
| 69 assertHasAssist(AssistKind kind, String expected) async { | 52 assertHasAssist(AssistKind kind, String expected) async { |
| 70 assist = await _assertHasAssist(kind); | 53 assist = await _assertHasAssist(kind); |
| 71 change = assist.change; | 54 change = assist.change; |
| 72 // apply to "file" | 55 // apply to "file" |
| 73 List<SourceFileEdit> fileEdits = change.edits; | 56 List<SourceFileEdit> fileEdits = change.edits; |
| 74 expect(fileEdits, hasLength(1)); | 57 expect(fileEdits, hasLength(1)); |
| (...skipping 956 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1031 /// AAAAAAA [int] AAAAAAA | 1014 /// AAAAAAA [int] AAAAAAA |
| 1032 /// BBBBBBBB BBBB BBBB | 1015 /// BBBBBBBB BBBB BBBB |
| 1033 /// CCC [A] CCCCCCCCCCC | 1016 /// CCC [A] CCCCCCCCCCC |
| 1034 mmm() {} | 1017 mmm() {} |
| 1035 } | 1018 } |
| 1036 '''); | 1019 '''); |
| 1037 } | 1020 } |
| 1038 | 1021 |
| 1039 test_convertFlutterChild_OK_multiLine() async { | 1022 test_convertFlutterChild_OK_multiLine() async { |
| 1040 _configureFlutterPkg({ | 1023 _configureFlutterPkg({ |
| 1041 'src/widgets/framework.dart': _flutter_framework_code, | 1024 'src/widgets/framework.dart': flutter_framework_code, |
| 1042 }); | 1025 }); |
| 1043 await resolveTestUnit(''' | 1026 await resolveTestUnit(''' |
| 1044 import 'package:flutter/src/widgets/framework.dart'; | 1027 import 'package:flutter/src/widgets/framework.dart'; |
| 1045 build() { | 1028 build() { |
| 1046 return new Scaffold( | 1029 return new Scaffold( |
| 1047 // start | 1030 // start |
| 1048 body: new Center( | 1031 body: new Center( |
| 1049 /*caret*/child: new Container( | 1032 /*caret*/child: new Container( |
| 1050 width: 200.0, | 1033 width: 200.0, |
| 1051 height: 300.0, | 1034 height: 300.0, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1075 ), | 1058 ), |
| 1076 // end | 1059 // end |
| 1077 ); | 1060 ); |
| 1078 } | 1061 } |
| 1079 '''); | 1062 '''); |
| 1080 } | 1063 } |
| 1081 | 1064 |
| 1082 test_convertFlutterChild_OK_newlineChild() async { | 1065 test_convertFlutterChild_OK_newlineChild() async { |
| 1083 // This case could occur with deeply nested constructors, common in Flutter. | 1066 // This case could occur with deeply nested constructors, common in Flutter. |
| 1084 _configureFlutterPkg({ | 1067 _configureFlutterPkg({ |
| 1085 'src/widgets/framework.dart': _flutter_framework_code, | 1068 'src/widgets/framework.dart': flutter_framework_code, |
| 1086 }); | 1069 }); |
| 1087 await resolveTestUnit(''' | 1070 await resolveTestUnit(''' |
| 1088 import 'package:flutter/src/widgets/framework.dart'; | 1071 import 'package:flutter/src/widgets/framework.dart'; |
| 1089 build() { | 1072 build() { |
| 1090 return new Scaffold( | 1073 return new Scaffold( |
| 1091 // start | 1074 // start |
| 1092 body: new Center( | 1075 body: new Center( |
| 1093 /*caret*/child: | 1076 /*caret*/child: |
| 1094 new Container( | 1077 new Container( |
| 1095 width: 200.0, | 1078 width: 200.0, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1119 key: null, | 1102 key: null, |
| 1120 ), | 1103 ), |
| 1121 // end | 1104 // end |
| 1122 ); | 1105 ); |
| 1123 } | 1106 } |
| 1124 '''); | 1107 '''); |
| 1125 } | 1108 } |
| 1126 | 1109 |
| 1127 test_convertFlutterChild_OK_singleLine() async { | 1110 test_convertFlutterChild_OK_singleLine() async { |
| 1128 _configureFlutterPkg({ | 1111 _configureFlutterPkg({ |
| 1129 'src/widgets/framework.dart': _flutter_framework_code, | 1112 'src/widgets/framework.dart': flutter_framework_code, |
| 1130 }); | 1113 }); |
| 1131 await resolveTestUnit(''' | 1114 await resolveTestUnit(''' |
| 1132 import 'package:flutter/src/widgets/framework.dart'; | 1115 import 'package:flutter/src/widgets/framework.dart'; |
| 1133 build() { | 1116 build() { |
| 1134 return new Scaffold( | 1117 return new Scaffold( |
| 1135 // start | 1118 // start |
| 1136 body: new Center( | 1119 body: new Center( |
| 1137 /*caret*/child: new GestureDetector(), | 1120 /*caret*/child: new GestureDetector(), |
| 1138 key: null, | 1121 key: null, |
| 1139 ), | 1122 ), |
| (...skipping 2480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3620 DartAssistKind.JOIN_VARIABLE_DECLARATION, | 3603 DartAssistKind.JOIN_VARIABLE_DECLARATION, |
| 3621 ''' | 3604 ''' |
| 3622 main() { | 3605 main() { |
| 3623 var v = 1; | 3606 var v = 1; |
| 3624 } | 3607 } |
| 3625 '''); | 3608 '''); |
| 3626 } | 3609 } |
| 3627 | 3610 |
| 3628 test_moveFlutterWidgetDown_OK() async { | 3611 test_moveFlutterWidgetDown_OK() async { |
| 3629 _configureFlutterPkg({ | 3612 _configureFlutterPkg({ |
| 3630 'src/widgets/framework.dart': _flutter_framework_code, | 3613 'src/widgets/framework.dart': flutter_framework_code, |
| 3631 }); | 3614 }); |
| 3632 await resolveTestUnit(''' | 3615 await resolveTestUnit(''' |
| 3633 import 'package:flutter/src/widgets/framework.dart'; | 3616 import 'package:flutter/src/widgets/framework.dart'; |
| 3634 build() { | 3617 build() { |
| 3635 return new Scaffold( | 3618 return new Scaffold( |
| 3636 // start | 3619 // start |
| 3637 body: new /*caret*/GestureDetector( | 3620 body: new /*caret*/GestureDetector( |
| 3638 onTap: () => startResize(), | 3621 onTap: () => startResize(), |
| 3639 child: new Center( | 3622 child: new Center( |
| 3640 child: new Container( | 3623 child: new Container( |
| (...skipping 28 matching lines...) Expand all Loading... |
| 3669 ), | 3652 ), |
| 3670 // end | 3653 // end |
| 3671 ); | 3654 ); |
| 3672 } | 3655 } |
| 3673 startResize() {} | 3656 startResize() {} |
| 3674 '''); | 3657 '''); |
| 3675 } | 3658 } |
| 3676 | 3659 |
| 3677 test_moveFlutterWidgetUp_OK() async { | 3660 test_moveFlutterWidgetUp_OK() async { |
| 3678 _configureFlutterPkg({ | 3661 _configureFlutterPkg({ |
| 3679 'src/widgets/framework.dart': _flutter_framework_code, | 3662 'src/widgets/framework.dart': flutter_framework_code, |
| 3680 }); | 3663 }); |
| 3681 await resolveTestUnit(''' | 3664 await resolveTestUnit(''' |
| 3682 import 'package:flutter/src/widgets/framework.dart'; | 3665 import 'package:flutter/src/widgets/framework.dart'; |
| 3683 build() { | 3666 build() { |
| 3684 return new Scaffold( | 3667 return new Scaffold( |
| 3685 // start | 3668 // start |
| 3686 body: new Center( | 3669 body: new Center( |
| 3687 child: new /*caret*/GestureDetector( | 3670 child: new /*caret*/GestureDetector( |
| 3688 onTap: () => startResize(), | 3671 onTap: () => startResize(), |
| 3689 child: new Container( | 3672 child: new Container( |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3839 await assertHasAssistAt( | 3822 await assertHasAssistAt( |
| 3840 'int ', | 3823 'int ', |
| 3841 DartAssistKind.REMOVE_TYPE_ANNOTATION, | 3824 DartAssistKind.REMOVE_TYPE_ANNOTATION, |
| 3842 ''' | 3825 ''' |
| 3843 final V = 1; | 3826 final V = 1; |
| 3844 '''); | 3827 '''); |
| 3845 } | 3828 } |
| 3846 | 3829 |
| 3847 test_reparentFlutterList_BAD_multiLine() async { | 3830 test_reparentFlutterList_BAD_multiLine() async { |
| 3848 _configureFlutterPkg({ | 3831 _configureFlutterPkg({ |
| 3849 'src/widgets/framework.dart': _flutter_framework_code, | 3832 'src/widgets/framework.dart': flutter_framework_code, |
| 3850 }); | 3833 }); |
| 3851 await resolveTestUnit(''' | 3834 await resolveTestUnit(''' |
| 3852 import 'package:flutter/src/widgets/framework.dart'; | 3835 import 'package:flutter/src/widgets/framework.dart'; |
| 3853 build() { | 3836 build() { |
| 3854 return new Container( | 3837 return new Container( |
| 3855 child: new Row( | 3838 child: new Row( |
| 3856 children: [/*caret*/ | 3839 children: [/*caret*/ |
| 3857 // start | 3840 // start |
| 3858 new Transform(), | 3841 new Transform(), |
| 3859 new Object(), | 3842 new Object(), |
| 3860 new AspectRatio(), | 3843 new AspectRatio(), |
| 3861 // end | 3844 // end |
| 3862 ], | 3845 ], |
| 3863 ), | 3846 ), |
| 3864 ); | 3847 ); |
| 3865 } | 3848 } |
| 3866 '''); | 3849 '''); |
| 3867 _setCaretLocation(); | 3850 _setCaretLocation(); |
| 3868 await assertNoAssist(DartAssistKind.REPARENT_FLUTTER_LIST); | 3851 await assertNoAssist(DartAssistKind.REPARENT_FLUTTER_LIST); |
| 3869 } | 3852 } |
| 3870 | 3853 |
| 3871 test_reparentFlutterList_BAD_singleLine() async { | 3854 test_reparentFlutterList_BAD_singleLine() async { |
| 3872 _configureFlutterPkg({ | 3855 _configureFlutterPkg({ |
| 3873 'src/widgets/framework.dart': _flutter_framework_code, | 3856 'src/widgets/framework.dart': flutter_framework_code, |
| 3874 }); | 3857 }); |
| 3875 await resolveTestUnit(''' | 3858 await resolveTestUnit(''' |
| 3876 import 'package:flutter/src/widgets/framework.dart'; | 3859 import 'package:flutter/src/widgets/framework.dart'; |
| 3877 class FakeFlutter { | 3860 class FakeFlutter { |
| 3878 main() { | 3861 main() { |
| 3879 var obj; | 3862 var obj; |
| 3880 // start | 3863 // start |
| 3881 return new Row(children: [/*caret*/ new Transform()]); | 3864 return new Row(children: [/*caret*/ new Transform()]); |
| 3882 // end | 3865 // end |
| 3883 } | 3866 } |
| 3884 } | 3867 } |
| 3885 '''); | 3868 '''); |
| 3886 _setCaretLocation(); | 3869 _setCaretLocation(); |
| 3887 await assertNoAssist(DartAssistKind.REPARENT_FLUTTER_LIST); | 3870 await assertNoAssist(DartAssistKind.REPARENT_FLUTTER_LIST); |
| 3888 } | 3871 } |
| 3889 | 3872 |
| 3890 test_reparentFlutterList_OK_multiLine() async { | 3873 test_reparentFlutterList_OK_multiLine() async { |
| 3891 _configureFlutterPkg({ | 3874 _configureFlutterPkg({ |
| 3892 'src/widgets/framework.dart': _flutter_framework_code, | 3875 'src/widgets/framework.dart': flutter_framework_code, |
| 3893 }); | 3876 }); |
| 3894 await resolveTestUnit(''' | 3877 await resolveTestUnit(''' |
| 3895 import 'package:flutter/src/widgets/framework.dart'; | 3878 import 'package:flutter/src/widgets/framework.dart'; |
| 3896 build() { | 3879 build() { |
| 3897 return new Container( | 3880 return new Container( |
| 3898 child: new Row( | 3881 child: new Row( |
| 3899 // start | 3882 // start |
| 3900 children: [/*caret*/ | 3883 children: [/*caret*/ |
| 3901 new Transform(), | 3884 new Transform(), |
| 3902 new Transform(), | 3885 new Transform(), |
| (...skipping 24 matching lines...) Expand all Loading... |
| 3927 ], | 3910 ], |
| 3928 // end | 3911 // end |
| 3929 ), | 3912 ), |
| 3930 ); | 3913 ); |
| 3931 } | 3914 } |
| 3932 '''); | 3915 '''); |
| 3933 } | 3916 } |
| 3934 | 3917 |
| 3935 test_reparentFlutterWidget_BAD_minimal() async { | 3918 test_reparentFlutterWidget_BAD_minimal() async { |
| 3936 _configureFlutterPkg({ | 3919 _configureFlutterPkg({ |
| 3937 'src/widgets/framework.dart': _flutter_framework_code, | 3920 'src/widgets/framework.dart': flutter_framework_code, |
| 3938 }); | 3921 }); |
| 3939 await resolveTestUnit(''' | 3922 await resolveTestUnit(''' |
| 3940 /*caret*/x(){} | 3923 /*caret*/x(){} |
| 3941 '''); | 3924 '''); |
| 3942 _setCaretLocation(); | 3925 _setCaretLocation(); |
| 3943 await assertNoAssist(DartAssistKind.REPARENT_FLUTTER_WIDGET); | 3926 await assertNoAssist(DartAssistKind.REPARENT_FLUTTER_WIDGET); |
| 3944 } | 3927 } |
| 3945 | 3928 |
| 3946 test_reparentFlutterWidget_BAD_singleLine() async { | 3929 test_reparentFlutterWidget_BAD_singleLine() async { |
| 3947 _configureFlutterPkg({ | 3930 _configureFlutterPkg({ |
| 3948 'src/widgets/framework.dart': _flutter_framework_code, | 3931 'src/widgets/framework.dart': flutter_framework_code, |
| 3949 }); | 3932 }); |
| 3950 await resolveTestUnit(''' | 3933 await resolveTestUnit(''' |
| 3951 import 'package:flutter/src/widgets/framework.dart'; | 3934 import 'package:flutter/src/widgets/framework.dart'; |
| 3952 class FakeFlutter { | 3935 class FakeFlutter { |
| 3953 main() { | 3936 main() { |
| 3954 var obj; | 3937 var obj; |
| 3955 // start | 3938 // start |
| 3956 return new Container(child: obj.xyz./*caret*/abc); | 3939 return new Container(child: obj.xyz./*caret*/abc); |
| 3957 // end | 3940 // end |
| 3958 } | 3941 } |
| 3959 } | 3942 } |
| 3960 '''); | 3943 '''); |
| 3961 _setCaretLocation(); | 3944 _setCaretLocation(); |
| 3962 await assertNoAssist(DartAssistKind.REPARENT_FLUTTER_WIDGET); | 3945 await assertNoAssist(DartAssistKind.REPARENT_FLUTTER_WIDGET); |
| 3963 } | 3946 } |
| 3964 | 3947 |
| 3965 test_reparentFlutterWidget_OK_multiLines() async { | 3948 test_reparentFlutterWidget_OK_multiLines() async { |
| 3966 _configureFlutterPkg({ | 3949 _configureFlutterPkg({ |
| 3967 'src/widgets/framework.dart': _flutter_framework_code, | 3950 'src/widgets/framework.dart': flutter_framework_code, |
| 3968 }); | 3951 }); |
| 3969 await resolveTestUnit(''' | 3952 await resolveTestUnit(''' |
| 3970 import 'package:flutter/src/widgets/framework.dart'; | 3953 import 'package:flutter/src/widgets/framework.dart'; |
| 3971 class FakeFlutter { | 3954 class FakeFlutter { |
| 3972 main() { | 3955 main() { |
| 3973 return new Container( | 3956 return new Container( |
| 3974 // start | 3957 // start |
| 3975 child: new /*caret*/DefaultTextStyle( | 3958 child: new /*caret*/DefaultTextStyle( |
| 3976 child: new Row( | 3959 child: new Row( |
| 3977 children: <Widget>[ | 3960 children: <Widget>[ |
| (...skipping 28 matching lines...) Expand all Loading... |
| 4006 ), | 3989 ), |
| 4007 // end | 3990 // end |
| 4008 ); | 3991 ); |
| 4009 } | 3992 } |
| 4010 } | 3993 } |
| 4011 '''); | 3994 '''); |
| 4012 } | 3995 } |
| 4013 | 3996 |
| 4014 test_reparentFlutterWidget_OK_singleLine1() async { | 3997 test_reparentFlutterWidget_OK_singleLine1() async { |
| 4015 _configureFlutterPkg({ | 3998 _configureFlutterPkg({ |
| 4016 'src/widgets/framework.dart': _flutter_framework_code, | 3999 'src/widgets/framework.dart': flutter_framework_code, |
| 4017 }); | 4000 }); |
| 4018 await resolveTestUnit(''' | 4001 await resolveTestUnit(''' |
| 4019 import 'package:flutter/src/widgets/framework.dart'; | 4002 import 'package:flutter/src/widgets/framework.dart'; |
| 4020 class FakeFlutter { | 4003 class FakeFlutter { |
| 4021 main() { | 4004 main() { |
| 4022 // start | 4005 // start |
| 4023 return /*caret*/new Container(); | 4006 return /*caret*/new Container(); |
| 4024 // end | 4007 // end |
| 4025 } | 4008 } |
| 4026 } | 4009 } |
| 4027 '''); | 4010 '''); |
| 4028 _setCaretLocation(); | 4011 _setCaretLocation(); |
| 4029 await assertHasAssist( | 4012 await assertHasAssist( |
| 4030 DartAssistKind.REPARENT_FLUTTER_WIDGET, | 4013 DartAssistKind.REPARENT_FLUTTER_WIDGET, |
| 4031 ''' | 4014 ''' |
| 4032 import 'package:flutter/src/widgets/framework.dart'; | 4015 import 'package:flutter/src/widgets/framework.dart'; |
| 4033 class FakeFlutter { | 4016 class FakeFlutter { |
| 4034 main() { | 4017 main() { |
| 4035 // start | 4018 // start |
| 4036 return /*caret*/new widget(child: new Container()); | 4019 return /*caret*/new widget(child: new Container()); |
| 4037 // end | 4020 // end |
| 4038 } | 4021 } |
| 4039 } | 4022 } |
| 4040 '''); | 4023 '''); |
| 4041 } | 4024 } |
| 4042 | 4025 |
| 4043 test_reparentFlutterWidget_OK_singleLine2() async { | 4026 test_reparentFlutterWidget_OK_singleLine2() async { |
| 4044 _configureFlutterPkg({ | 4027 _configureFlutterPkg({ |
| 4045 'src/widgets/framework.dart': _flutter_framework_code, | 4028 'src/widgets/framework.dart': flutter_framework_code, |
| 4046 }); | 4029 }); |
| 4047 await resolveTestUnit(''' | 4030 await resolveTestUnit(''' |
| 4048 import 'package:flutter/src/widgets/framework.dart'; | 4031 import 'package:flutter/src/widgets/framework.dart'; |
| 4049 class FakeFlutter { | 4032 class FakeFlutter { |
| 4050 main() { | 4033 main() { |
| 4051 // start | 4034 // start |
| 4052 return new ClipRect./*caret*/rect(); | 4035 return new ClipRect./*caret*/rect(); |
| 4053 // end | 4036 // end |
| 4054 } | 4037 } |
| 4055 } | 4038 } |
| (...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4740 | 4723 |
| 4741 @override | 4724 @override |
| 4742 final AnalysisContext analysisContext; | 4725 final AnalysisContext analysisContext; |
| 4743 | 4726 |
| 4744 @override | 4727 @override |
| 4745 final CompilationUnit unit; | 4728 final CompilationUnit unit; |
| 4746 | 4729 |
| 4747 _DartAssistContextForValues(this.source, this.selectionOffset, | 4730 _DartAssistContextForValues(this.source, this.selectionOffset, |
| 4748 this.selectionLength, this.analysisContext, this.unit); | 4731 this.selectionLength, this.analysisContext, this.unit); |
| 4749 } | 4732 } |
| OLD | NEW |