Skip to content

Analyzer indicates wrong return type for function #17212

@manuelVo

Description

@manuelVo

The matrix-sdk and it's subcrates contain several structs with the name SyncResponse. When calling client.sync_once as seen below, the function returns matrix_sdk::sync::SyncResponse. However, rust-analyzer determines the type to be from the matrix_sdk_base it indicates matrix_sdk_base::sync::SyncResponse. This can be seen by doing either of those:

  1. Ctrl+Click on the Type jumps in to the source code of matrix_sdk_base
  2. Trying to extract SyncResponse::next_batch as seen in the code below. This field does exist in matrix_sdk::sync::SyncResponse but not in matrix_sdk_base::sync::SyncResponse. Since rust-analyzer resolves to matrix_sdk_base::sync::SyncResponse, the type of token cannot be resolved.

rust-analyzer version: 0.4.1954-standalone

rustc version: rustc 1.78.0 (9b00956e5 2024-04-29)

editor or extension: VSCode extension v0.3.1950

relevant settings: Unchanged default settings

code snippet to reproduce:

use matrix_sdk::{config::SyncSettings, ruma::user_id, Client};

#[tokio::main(flavor = "current_thread")]
async fn main() {
    let user = user_id!("@user:example.org");

    let client = Client::builder()
        .server_name(user.server_name())
        .build()
        .await
        .unwrap();

    let sync_response = client.sync_once(SyncSettings::new()).await.unwrap();
    let token = sync_response.next_batch;

    println!("{:?}", token);
}
[package]
name = "analyzer-bug"
version = "0.1.0"
edition = "2021"

[dependencies]
matrix-sdk = "0.7.1"
tokio = { version = "1.37.0", features = ["macros", "rt"] }

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-nameresname, path and module resolutionC-bugCategory: bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions