cairo-lang-language-server 2.9.4

Cairo language server.
Documentation
//! > Hover

//! > test_runner_name
test_hover

//! > cairo_project.toml
[crate_roots]
hello = "src"

[config.global]
edition = "2023_11"

//! > cairo_code
/// some_module docstring.
mod some_<caret>module {
    /// internal_module docstring.
    pub mod internal_module<caret> {
        pub trait MyTrait<T> {
            fn foo(t: T);
        }

        pub impl MyTraitImpl of MyTrait<u32> {
            fn foo(t: u32) {}
        }

        pub mod nested_internal_module {
            pub struct PublicStruct {}
            struct PrivateStruct {}

            pub fn foo() {}
        }
    }

    /// internal_module2 docstring.
    pub mod internal_module2 {
        use super::internal_module<caret>;

        /// private_submodule docstring.
        mod <caret>private_submodule {
            struct PrivateStruct2 {}
        }
    }
}

mod happy_cases {
    use super::some_<caret>module;
    use super::some_module::internal_module;
    use super::some_module::internal_<caret>module::MyTrait;
    use super::some_module::internal_module::nested_inte<caret>rnal_module;

    impl TraitImpl of super::some_module::internal<caret>_module::MyTrait<felt252> {
        fn foo(t: felt252) {}
    }

    impl TraitImpl2 of internal_<caret>module::MyTrait<u8> {
        fn foo(t: u8) {}
    }

    fn function_with_path() {
        super::some_module::internal_module::nested_internal_module::foo();
        <caret>super::some_module::internal_module::nested_internal_module::foo();
        super::some_module::inte<caret>rnal_module::nested_internal_module::foo();
        super::some_module::internal_module::nested_internal<caret>_module::foo();
    }

    fn function_with_partial_path() {
        nested_in<caret>ternal_module::foo();
        internal_<caret>module::MyTraitImpl::foo(0_u32);
    }

    fn constructor_with_path() {
        let _ = super::some_module::internal_module::nested_internal_module::PublicStruct {};
        let _ = <caret>super::some_module::internal_module::nested_internal_module::PublicStruct {};
        let _ = super::some_module::inte<caret>rnal_module::nested_internal_module::PublicStruct {};
        let _ = super::some_module::internal_module::nested_internal<caret>_module::PublicStruct {};
    }
}

// Although the code itself is semantically invalid because of items' visibility, paths should be shown correctly.
mod unhappy_cases {
    use super::some_module::internal_module;
    use super::some_module::internal_module2::private<caret>_submodule;

    fn private_item {
        let _ = super::some_module::internal<caret>_module::PrivateStruct {};
        let _ = private_sub<caret>module::PrivateStruct2 {};
    }
}

//! > hover #0
// = source context
mod some_<caret>module {
// = highlight
mod <sel>some_module</sel> {
// = popover
```cairo
hello
```
```cairo
mod some_module
```
---
some_module docstring.

//! > hover #1
// = source context
    pub mod internal_module<caret> {
// = highlight
    pub mod <sel>internal_module</sel> {
// = popover
```cairo
hello::some_module
```
```cairo
mod internal_module
```
---
internal_module docstring.

//! > hover #2
// = source context
        use super::internal_module<caret>;
// = highlight
        use super::<sel>internal_module</sel>;
// = popover
```cairo
hello::some_module
```
```cairo
mod internal_module
```
---
internal_module docstring.

//! > hover #3
// = source context
        mod <caret>private_submodule {
// = highlight
        mod <sel>private_submodule</sel> {
// = popover
```cairo
hello::some_module::internal_module2
```
```cairo
mod private_submodule
```
---
private_submodule docstring.

//! > hover #4
// = source context
    use super::some_<caret>module;
// = highlight
    use super::<sel>some_module</sel>;
// = popover
```cairo
hello
```
```cairo
mod some_module
```
---
some_module docstring.

//! > hover #5
// = source context
    use super::some_module::internal_<caret>module::MyTrait;
// = highlight
    use super::some_module::<sel>internal_module</sel>::MyTrait;
// = popover
```cairo
hello::some_module
```
```cairo
mod internal_module
```
---
internal_module docstring.

//! > hover #6
// = source context
    use super::some_module::internal_module::nested_inte<caret>rnal_module;
// = highlight
    use super::some_module::internal_module::<sel>nested_internal_module</sel>;
// = popover
```cairo
hello::some_module::internal_module
```
```cairo
mod nested_internal_module
```

//! > hover #7
// = source context
    impl TraitImpl of super::some_module::internal<caret>_module::MyTrait<felt252> {
// = highlight
    impl TraitImpl of super::some_module::<sel>internal_module</sel>::MyTrait<felt252> {
// = popover
```cairo
hello::some_module
```
```cairo
mod internal_module
```
---
internal_module docstring.

//! > hover #8
// = source context
    impl TraitImpl2 of internal_<caret>module::MyTrait<u8> {
// = highlight
    impl TraitImpl2 of <sel>internal_module</sel>::MyTrait<u8> {
// = popover
```cairo
hello::some_module
```
```cairo
mod internal_module
```
---
internal_module docstring.

//! > hover #9
// = source context
        <caret>super::some_module::internal_module::nested_internal_module::foo();
// = highlight
        <sel>super</sel>::some_module::internal_module::nested_internal_module::foo();
// = popover
```cairo
hello::happy_cases
```
```cairo
fn function_with_path()
```

//! > hover #10
// = source context
        super::some_module::inte<caret>rnal_module::nested_internal_module::foo();
// = highlight
        super::some_module::<sel>internal_module</sel>::nested_internal_module::foo();
// = popover
```cairo
hello::some_module
```
```cairo
mod internal_module
```
---
internal_module docstring.

//! > hover #11
// = source context
        super::some_module::internal_module::nested_internal<caret>_module::foo();
// = highlight
        super::some_module::internal_module::<sel>nested_internal_module</sel>::foo();
// = popover
```cairo
hello::some_module::internal_module
```
```cairo
mod nested_internal_module
```

//! > hover #12
// = source context
        nested_in<caret>ternal_module::foo();
// = highlight
        <sel>nested_internal_module</sel>::foo();
// = popover
```cairo
hello::some_module::internal_module
```
```cairo
mod nested_internal_module
```

//! > hover #13
// = source context
        internal_<caret>module::MyTraitImpl::foo(0_u32);
// = highlight
        <sel>internal_module</sel>::MyTraitImpl::foo(0_u32);
// = popover
```cairo
hello::some_module
```
```cairo
mod internal_module
```
---
internal_module docstring.

//! > hover #14
// = source context
        let _ = <caret>super::some_module::internal_module::nested_internal_module::PublicStruct {};
// = highlight
No highlight information.
// = popover
```cairo
hello::some_module::internal_module::nested_internal_module::PublicStruct
```

//! > hover #15
// = source context
        let _ = super::some_module::inte<caret>rnal_module::nested_internal_module::PublicStruct {};
// = highlight
        let _ = super::some_module::<sel>internal_module</sel>::nested_internal_module::PublicStruct {};
// = popover
```cairo
hello::some_module
```
```cairo
mod internal_module
```
---
internal_module docstring.

//! > hover #16
// = source context
        let _ = super::some_module::internal_module::nested_internal<caret>_module::PublicStruct {};
// = highlight
        let _ = super::some_module::internal_module::<sel>nested_internal_module</sel>::PublicStruct {};
// = popover
```cairo
hello::some_module::internal_module
```
```cairo
mod nested_internal_module
```

//! > hover #17
// = source context
    use super::some_module::internal_module2::private<caret>_submodule;
// = highlight
    use super::some_module::internal_module2::<sel>private_submodule</sel>;
// = popover
```cairo
hello::some_module::internal_module2
```
```cairo
mod private_submodule
```
---
private_submodule docstring.

//! > hover #18
// = source context
        let _ = super::some_module::internal<caret>_module::PrivateStruct {};
// = highlight
        let _ = super::some_module::<sel>internal_module</sel>::PrivateStruct {};
// = popover
```cairo
hello::some_module
```
```cairo
mod internal_module
```
---
internal_module docstring.

//! > hover #19
// = source context
        let _ = private_sub<caret>module::PrivateStruct2 {};
// = highlight
        let _ = <sel>private_submodule</sel>::PrivateStruct2 {};
// = popover
```cairo
hello::some_module::internal_module2
```
```cairo
mod private_submodule
```
---
private_submodule docstring.