Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions crates/rust-analyzer/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ env_logger = { version = "0.8.1", default-features = false }
itertools = "0.9.0"
jod-thread = "0.1.0"
log = "0.4.8"
lsp-types = { version = "0.83.0", features = ["proposed"] }
lsp-types = { version = "0.83.1", features = ["proposed"] }
parking_lot = "0.11.0"
pico-args = "0.3.1"
oorandom = "11.1.2"
Expand All @@ -31,7 +31,7 @@ serde_json = "1.0.48"
threadpool = "1.7.1"
rayon = "1.5"
mimalloc = { version = "0.1.19", default-features = false, optional = true }
lsp-server = "0.4.0"
lsp-server = "0.5.0"
tracing = "0.1"
tracing-subscriber = { version = "0.2", default-features = false, features = ["env-filter", "registry"] }
tracing-tree = { version = "0.1.4" }
Expand Down
1 change: 1 addition & 0 deletions crates/rust-analyzer/src/caps.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ pub fn server_capabilities(client_caps: &ClientCapabilities) -> ServerCapabiliti
prepare_provider: Some(true),
work_done_progress_options: WorkDoneProgressOptions { work_done_progress: None },
})),
on_type_rename_provider: None,
document_link_provider: None,
color_provider: None,
execute_command_provider: None,
Expand Down
4 changes: 2 additions & 2 deletions crates/rust-analyzer/src/diagnostics/to_proto.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ fn location_naive(workspace_root: &Path, span: &DiagnosticSpan) -> lsp_types::Lo

// FIXME: this doesn't handle UTF16 offsets correctly
let range = lsp_types::Range::new(
lsp_types::Position::new(span.line_start as u64 - 1, span.column_start as u64 - 1),
lsp_types::Position::new(span.line_end as u64 - 1, span.column_end as u64 - 1),
lsp_types::Position::new(span.line_start as u32 - 1, span.column_start as u32 - 1),
lsp_types::Position::new(span.line_end as u32 - 1, span.column_end as u32 - 1),
);

lsp_types::Location { uri, range }
Expand Down
6 changes: 3 additions & 3 deletions crates/rust-analyzer/src/document.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
/// client notifications.
#[derive(Debug, Clone)]
pub(crate) struct DocumentData {
pub(crate) version: Option<i64>,
pub(crate) version: i32,
}

impl DocumentData {
pub(crate) fn new(version: i64) -> Self {
DocumentData { version: Some(version) }
pub(crate) fn new(version: i32) -> Self {
DocumentData { version }
}
}
4 changes: 2 additions & 2 deletions crates/rust-analyzer/src/global_state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -263,9 +263,9 @@ impl GlobalStateSnapshot {
self.vfs.read().1[&id]
}

pub(crate) fn url_file_version(&self, url: &Url) -> Option<i64> {
pub(crate) fn url_file_version(&self, url: &Url) -> Option<i32> {
let path = from_proto::vfs_path(&url).ok()?;
self.mem_docs.get(&path)?.version
Some(self.mem_docs.get(&path)?.version)
}

pub(crate) fn anchored_path(&self, file_id: FileId, path: &str) -> Url {
Expand Down
2 changes: 1 addition & 1 deletion crates/rust-analyzer/src/lsp_ext.rs
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ pub enum SnippetDocumentChangeOperation {
#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SnippetTextDocumentEdit {
pub text_document: lsp_types::VersionedTextDocumentIdentifier,
pub text_document: lsp_types::OptionalVersionedTextDocumentIdentifier,
pub edits: Vec<SnippetTextEdit>,
}

Expand Down
6 changes: 3 additions & 3 deletions crates/rust-analyzer/src/lsp_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ impl GlobalState {
}
let percentage = fraction.map(|f| {
assert!(0.0 <= f && f <= 1.0);
f * 100.0
(f * 100.0) as u32
});
let token = lsp_types::ProgressToken::String(format!("rustAnalyzer/{}", title));
let work_done_progress = match state {
Expand Down Expand Up @@ -98,11 +98,11 @@ pub(crate) fn apply_document_changes(
// The VFS will normalize the end of lines to `\n`.
enum IndexValid {
All,
UpToLineExclusive(u64),
UpToLineExclusive(u32),
}

impl IndexValid {
fn covers(&self, line: u64) -> bool {
fn covers(&self, line: u32) -> bool {
match *self {
IndexValid::UpToLineExclusive(to) => to > line,
_ => true,
Expand Down
4 changes: 2 additions & 2 deletions crates/rust-analyzer/src/main_loop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ impl GlobalState {
let url = file_id_to_url(&self.vfs.read().0, file_id);
let diagnostics = self.diagnostics.diagnostics_for(file_id).cloned().collect();
let version = from_proto::vfs_path(&url)
.map(|path| self.mem_docs.get(&path)?.version)
.map(|path| self.mem_docs.get(&path).map(|it| it.version))
.unwrap_or_default();

self.send_notification::<lsp_types::notification::PublishDiagnostics>(
Expand Down Expand Up @@ -521,7 +521,7 @@ impl GlobalState {
let mut version = None;
if let Ok(path) = from_proto::vfs_path(&params.text_document.uri) {
match this.mem_docs.remove(&path) {
Some(doc) => version = doc.version,
Some(doc) => version = Some(doc.version),
None => log::error!("orphan DidCloseTextDocument: {}", path),
}

Expand Down
18 changes: 8 additions & 10 deletions crates/rust-analyzer/src/to_proto.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@ use crate::{

pub(crate) fn position(line_index: &LineIndex, offset: TextSize) -> lsp_types::Position {
let line_col = line_index.line_col(offset);
let line = u64::from(line_col.line);
let character = u64::from(line_col.col_utf16);
lsp_types::Position::new(line, character)
lsp_types::Position::new(line_col.line, line_col.col_utf16)
}

pub(crate) fn range(line_index: &LineIndex, range: TextRange) -> lsp_types::Range {
Expand Down Expand Up @@ -278,9 +276,9 @@ pub(crate) fn signature_help(
label.push_str(", ");
}
first = false;
let start = label.len() as u64;
let start = label.len() as u32;
label.push_str(param);
let end = label.len() as u64;
let end = label.len() as u32;
params.push(lsp_types::ParameterInformation {
label: lsp_types::ParameterLabel::LabelOffsets([start, end]),
documentation: None,
Expand All @@ -302,7 +300,7 @@ pub(crate) fn signature_help(
})
};

let active_parameter = call_info.active_parameter.map(|it| it as i64);
let active_parameter = call_info.active_parameter.map(|it| it as u32);

let signature = lsp_types::SignatureInformation {
label,
Expand Down Expand Up @@ -518,13 +516,13 @@ pub(crate) fn url_from_abs_path(path: &Path) -> lsp_types::Url {
lsp_types::Url::parse(&url).unwrap()
}

pub(crate) fn versioned_text_document_identifier(
pub(crate) fn optional_versioned_text_document_identifier(
snap: &GlobalStateSnapshot,
file_id: FileId,
) -> lsp_types::VersionedTextDocumentIdentifier {
) -> lsp_types::OptionalVersionedTextDocumentIdentifier {
let url = url(snap, file_id);
let version = snap.url_file_version(&url);
lsp_types::VersionedTextDocumentIdentifier { uri: url, version }
lsp_types::OptionalVersionedTextDocumentIdentifier { uri: url, version }
}

pub(crate) fn location(
Expand Down Expand Up @@ -613,7 +611,7 @@ pub(crate) fn snippet_text_document_edit(
is_snippet: bool,
source_file_edit: SourceFileEdit,
) -> Result<lsp_ext::SnippetTextDocumentEdit> {
let text_document = versioned_text_document_identifier(snap, source_file_edit.file_id);
let text_document = optional_versioned_text_document_identifier(snap, source_file_edit.file_id);
let line_index = snap.analysis.file_line_index(source_file_edit.file_id)?;
let line_endings = snap.file_line_endings(source_file_edit.file_id);
let edits = source_file_edit
Expand Down
4 changes: 2 additions & 2 deletions crates/rust-analyzer/tests/rust-analyzer/support.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ pub(crate) fn project(fixture: &str) -> Server {
}

pub(crate) struct Server {
req_id: Cell<u64>,
req_id: Cell<i32>,
messages: RefCell<Vec<Message>>,
_thread: jod_thread::JoinHandle<()>,
client: Connection,
Expand Down Expand Up @@ -165,7 +165,7 @@ impl Server {
R::Params: Serialize,
{
let id = self.req_id.get();
self.req_id.set(id + 1);
self.req_id.set(id.wrapping_add(1));

let r = Request::new(id.into(), R::METHOD.to_string(), params);
self.send_request_(r)
Expand Down
4 changes: 2 additions & 2 deletions docs/dev/lsp-extensions.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!---
lsp_ext.rs hash: 9d5daed5b25dc4f6
lsp_ext.rs hash: 203fdf79b21b5987

If you need to change the above hash to make the test pass, please check if you
need to adjust this doc as well and ping this issue:
Expand Down Expand Up @@ -45,7 +45,7 @@ interface SnippetTextEdit extends TextEdit {

```typescript
export interface TextDocumentEdit {
textDocument: VersionedTextDocumentIdentifier;
textDocument: OptionalVersionedTextDocumentIdentifier;
edits: (TextEdit | SnippetTextEdit)[];
}
```
Expand Down