1
1
use std:: env;
2
+ use std:: ops:: Index ;
2
3
use std:: path:: PathBuf ;
3
4
use std:: process:: Command ;
4
5
use std:: sync:: Arc ;
@@ -29,11 +30,13 @@ use lsp_types::Url;
29
30
use lsp_types:: WorkspaceEdit ;
30
31
use lsp_types:: { Position , Range , TextDocumentContentChangeEvent } ;
31
32
use parking_lot:: RwLock ;
33
+ use ra_ap_vfs:: AbsPathBuf ;
34
+ use ra_ap_vfs:: Vfs ;
32
35
33
36
use crate :: completion:: KCLCompletionItem ;
34
37
use crate :: document_symbol:: document_symbol;
35
- use crate :: formatting:: format_single_file ;
36
- use crate :: from_lsp:: file_path_from_url;
38
+ use crate :: formatting:: format ;
39
+ use crate :: from_lsp:: { abs_path , file_path_from_url, text_range } ;
37
40
use crate :: hover:: hover;
38
41
use crate :: quick_fix:: quick_fix;
39
42
use crate :: to_lsp:: kcl_diag_to_lsp_diags;
@@ -149,7 +152,7 @@ fn diagnostics_test() {
149
152
Param {
150
153
file : file. to_string ( ) ,
151
154
} ,
152
- None ,
155
+ Some ( Arc :: new ( RwLock :: new ( Default :: default ( ) ) ) ) ,
153
156
)
154
157
. unwrap ( ) ;
155
158
@@ -237,7 +240,7 @@ fn quick_fix_test() {
237
240
Param {
238
241
file : file. to_string ( ) ,
239
242
} ,
240
- None ,
243
+ Some ( Arc :: new ( RwLock :: new ( Default :: default ( ) ) ) ) ,
241
244
)
242
245
. unwrap ( ) ;
243
246
@@ -1226,7 +1229,7 @@ fn goto_import_external_file_test() {
1226
1229
Param {
1227
1230
file : path. to_string ( ) ,
1228
1231
} ,
1229
- None ,
1232
+ Some ( Arc :: new ( RwLock :: new ( Default :: default ( ) ) ) ) ,
1230
1233
)
1231
1234
. unwrap ( ) ;
1232
1235
@@ -1243,7 +1246,7 @@ fn goto_import_external_file_test() {
1243
1246
}
1244
1247
1245
1248
#[ test]
1246
- fn formmat_signle_file_test ( ) {
1249
+ fn format_signle_file_test ( ) {
1247
1250
const FILE_INPUT_SUFFIX : & str = ".input" ;
1248
1251
const FILE_OUTPUT_SUFFIX : & str = ".golden" ;
1249
1252
const TEST_CASES : & [ & str ; 17 ] = & [
@@ -1282,7 +1285,7 @@ fn formmat_signle_file_test() {
1282
1285
. unwrap ( )
1283
1286
. to_string ( ) ;
1284
1287
let test_src = std:: fs:: read_to_string ( & test_file) . unwrap ( ) ;
1285
- let got = format_single_file ( test_file, test_src) . unwrap ( ) . unwrap ( ) ;
1288
+ let got = format ( test_file, test_src, None ) . unwrap ( ) . unwrap ( ) ;
1286
1289
let data_output = std:: fs:: read_to_string (
1287
1290
& test_dir
1288
1291
. join ( format ! ( "{}{}" , case, FILE_OUTPUT_SUFFIX ) )
@@ -1310,6 +1313,26 @@ fn formmat_signle_file_test() {
1310
1313
. unwrap ( )
1311
1314
. to_string ( ) ;
1312
1315
let test_src = std:: fs:: read_to_string ( & test_file) . unwrap ( ) ;
1313
- let got = format_single_file ( test_file, test_src) . unwrap ( ) ;
1316
+ let got = format ( test_file, test_src, None ) . unwrap ( ) ;
1314
1317
assert_eq ! ( got, None )
1315
1318
}
1319
+
1320
+ #[ test]
1321
+ fn format_range_test ( ) {
1322
+ let ( file, program, prog_scope, _) = compile_test_file ( "src/test_data/format/format_range.k" ) ;
1323
+ let lsp_range = Range :: new ( Position :: new ( 0 , 0 ) , Position :: new ( 11 , 0 ) ) ;
1324
+ let text = std:: fs:: read_to_string ( file. clone ( ) ) . unwrap ( ) ;
1325
+
1326
+ let range = text_range ( & text, lsp_range) ;
1327
+ let src = text. index ( range) ;
1328
+
1329
+ let got = format ( file, src. to_owned ( ) , Some ( lsp_range) )
1330
+ . unwrap ( )
1331
+ . unwrap ( ) ;
1332
+
1333
+ let expected = vec ! [ TextEdit {
1334
+ range: lsp_range,
1335
+ new_text: "a = 1\n b = 2\n c = 3\n " . to_string( ) ,
1336
+ } ] ;
1337
+ assert_eq ! ( got, expected)
1338
+ }
0 commit comments