@@ -3,29 +3,26 @@ use lsp_types::{
3
3
CompletionResponse , DocumentSymbolResponse , Position , Range , TextDocumentContentChangeEvent ,
4
4
TextDocumentIdentifier ,
5
5
} ;
6
- use sway_lsp:: {
7
- capabilities, config:: LspClient , lsp_ext:: OnEnterParams , utils:: keyword_docs:: KeywordDocs ,
8
- } ;
6
+ use sway_lsp:: { capabilities, lsp_ext:: OnEnterParams } ;
9
7
use tokio:: runtime:: Runtime ;
10
8
11
9
fn benchmarks ( c : & mut Criterion ) {
12
- let ( uri, session, state) = Runtime :: new ( )
10
+ let ( uri, session, state, engines ) = Runtime :: new ( )
13
11
. unwrap ( )
14
12
. block_on ( async { black_box ( super :: compile_test_project ( ) . await ) } ) ;
15
13
let sync = state. sync_workspace . get ( ) . unwrap ( ) ;
16
14
let config = sway_lsp:: config:: Config :: default ( ) ;
17
- let keyword_docs = KeywordDocs :: new ( ) ;
18
15
let position = Position :: new ( 1717 , 24 ) ;
19
16
let range = Range :: new ( Position :: new ( 1628 , 0 ) , Position :: new ( 1728 , 0 ) ) ;
20
17
21
18
c. bench_function ( "semantic_tokens" , |b| {
22
- b. iter ( || capabilities:: semantic_tokens:: semantic_tokens_full ( session . clone ( ) , & uri) )
19
+ b. iter ( || capabilities:: semantic_tokens:: semantic_tokens_full ( & state . token_map , & uri) )
23
20
} ) ;
24
21
25
22
c. bench_function ( "document_symbol" , |b| {
26
23
b. iter ( || {
27
24
session
28
- . document_symbols ( & uri)
25
+ . document_symbols ( & uri, & state . token_map , & engines )
29
26
. map ( DocumentSymbolResponse :: Nested )
30
27
} )
31
28
} ) ;
@@ -34,40 +31,44 @@ fn benchmarks(c: &mut Criterion) {
34
31
let position = Position :: new ( 1698 , 28 ) ;
35
32
b. iter ( || {
36
33
session
37
- . completion_items ( & uri, position, "." )
34
+ . completion_items ( & uri, position, "." , & state . token_map , & engines )
38
35
. map ( CompletionResponse :: Array )
39
36
} )
40
37
} ) ;
41
38
42
39
c. bench_function ( "hover" , |b| {
43
40
b. iter ( || {
44
- capabilities:: hover:: hover_data (
41
+ capabilities:: hover:: hover_data ( & state, & engines, session. clone ( ) , & uri, position)
42
+ } )
43
+ } ) ;
44
+
45
+ c. bench_function ( "highlight" , |b| {
46
+ b. iter ( || {
47
+ capabilities:: highlight:: get_highlights (
45
48
session. clone ( ) ,
46
- & keyword_docs,
49
+ & engines,
50
+ & state. token_map ,
47
51
& uri,
48
52
position,
49
- LspClient :: default ( ) ,
50
- sync,
51
53
)
52
54
} )
53
55
} ) ;
54
56
55
- c. bench_function ( "highlight" , |b| {
56
- b. iter ( || capabilities:: highlight:: get_highlights ( session. clone ( ) , & uri, position) )
57
- } ) ;
58
-
59
57
c. bench_function ( "find_all_references" , |b| {
60
- b. iter ( || session. token_references ( & uri, position, sync) )
58
+ b. iter ( || session. token_references ( & uri, position, & state . token_map , & engines , sync) )
61
59
} ) ;
62
60
63
61
c. bench_function ( "goto_definition" , |b| {
64
- b. iter ( || session. token_definition_response ( & uri, position, sync) )
62
+ b. iter ( || {
63
+ session. token_definition_response ( & uri, position, & engines, & state. token_map , sync)
64
+ } )
65
65
} ) ;
66
66
67
67
c. bench_function ( "inlay_hints" , |b| {
68
68
b. iter ( || {
69
69
capabilities:: inlay_hints:: inlay_hints (
70
- session. clone ( ) ,
70
+ & engines,
71
+ & state. token_map ,
71
72
& uri,
72
73
& range,
73
74
& config. inlay_hints ,
@@ -76,13 +77,16 @@ fn benchmarks(c: &mut Criterion) {
76
77
} ) ;
77
78
78
79
c. bench_function ( "prepare_rename" , |b| {
79
- b. iter ( || capabilities:: rename:: prepare_rename ( session. clone ( ) , & uri, position, sync) )
80
+ b. iter ( || {
81
+ capabilities:: rename:: prepare_rename ( & engines, & state. token_map , & uri, position, sync)
82
+ } )
80
83
} ) ;
81
84
82
85
c. bench_function ( "rename" , |b| {
83
86
b. iter ( || {
84
87
capabilities:: rename:: rename (
85
- session. clone ( ) ,
88
+ & engines,
89
+ & state. token_map ,
86
90
"new_token_name" . to_string ( ) ,
87
91
& uri,
88
92
position,
@@ -94,7 +98,15 @@ fn benchmarks(c: &mut Criterion) {
94
98
c. bench_function ( "code_action" , |b| {
95
99
let range = Range :: new ( Position :: new ( 4 , 10 ) , Position :: new ( 4 , 10 ) ) ;
96
100
b. iter ( || {
97
- capabilities:: code_actions:: code_actions ( session. clone ( ) , & range, & uri, & uri, & vec ! [ ] )
101
+ capabilities:: code_actions:: code_actions (
102
+ session. clone ( ) ,
103
+ & engines,
104
+ & state. token_map ,
105
+ & range,
106
+ & uri,
107
+ & uri,
108
+ & vec ! [ ] ,
109
+ )
98
110
} )
99
111
} ) ;
100
112
0 commit comments