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
use Balance::contr<caret>act_state_for_testing;

/// The balance contract interface.
#[starknet::interface]
trait IBalance<T> {
    /// Returns the current balance.
    fn get(self: @T) -> u128;
    /// Increases the balance by the given amount.
    fn increase(ref self: T, a: u128);
}

/// The balance contract.
#[starknet::contract]
mod Balance {
    use core::traits::Into;

    #[storage]
    struct Storage {
        /// Storage value.
        value: u128,
    }

    #[constructor]
    fn constructor(ref se<caret>lf: Cont<caret>ractState, value_: u128) {
        self.va<caret>lue.write(<caret>value_);
    }

    #[abi(embed_v0)]
    impl Balance of super::IBa<caret>lance<Con<caret>tractState> {
        fn get(self: @ContractState) -> u128 {
            self.value.r<caret>ead()
        }
        fn increase(ref self: ContractState, a: u128)  {
            self.value.wr<caret>ite( self.value.read() + <caret>a );
        }
    }
}

//! > hover #0
// = source context
use Balance::contr<caret>act_state_for_testing;
// = highlight
use Balance::<sel>contract_state_for_testing</sel>;
// = popover
```cairo
hello
```
```cairo
pub fn contract_state_for_testing() -> ContractState
```

//! > hover #1
// = source context
    fn constructor(ref se<caret>lf: ContractState, value_: u128) {
// = highlight
    fn constructor(ref <sel>self</sel>: ContractState, value_: u128) {
// = popover
```cairo
hello::Balance
```
```cairo
fn constructor(ref self: ContractState, value_: u128)
```

//! > hover #2
// = source context
    fn constructor(ref self: Cont<caret>ractState, value_: u128) {
// = highlight
    fn constructor(ref self: <sel>ContractState</sel>, value_: u128) {
// = popover
```cairo
hello
```
```cairo
pub struct ContractState {}
```

//! > hover #3
// = source context
        self.va<caret>lue.write(value_);
// = highlight
        self.<sel>value</sel>.write(value_);
// = popover
```cairo
hello
```
```cairo
#[derive(Drop, Copy)]
#[doc(hidden)]
pub struct StorageStorageBaseMut {
    pub value: starknet::storage::StorageBase<starknet::storage::Mutable<u128>>,
}
```

//! > hover #4
// = source context
        self.value.write(<caret>value_);
// = highlight
        self.value.write(<sel>value_</sel>);
// = popover
```cairo
value_: core::integer::u128
```

//! > hover #5
// = source context
    impl Balance of super::IBa<caret>lance<ContractState> {
// = highlight
    impl Balance of super::<sel>IBalance</sel><ContractState> {
// = popover
```cairo
hello
```
```cairo
trait IBalance<T>
```
---
The balance contract interface.

//! > hover #6
// = source context
    impl Balance of super::IBalance<Con<caret>tractState> {
// = highlight
    impl Balance of super::IBalance<<sel>ContractState</sel>> {
// = popover
```cairo
hello
```
```cairo
pub struct ContractState {}
```

//! > hover #7
// = source context
            self.value.r<caret>ead()
// = highlight
            self.value.<sel>read</sel>()
// = popover
```cairo
core::starknet::storage::StoragePointerReadAccess
```
```cairo
pub trait StoragePointerReadAccess<T>
fn read(self: @T) -> Self::Value
```

//! > hover #8
// = source context
            self.value.wr<caret>ite( self.value.read() + a );
// = highlight
            self.value.<sel>write</sel>( self.value.read() + a );
// = popover
```cairo
core::starknet::storage::StoragePointerWriteAccess
```
```cairo
pub trait StoragePointerWriteAccess<T>
fn write(self: T, value: Self::Value)
```

//! > hover #9
// = source context
            self.value.write( self.value.read() + <caret>a );
// = highlight
            self.value.write( self.value.read() + <sel>a</sel> );
// = popover
```cairo
a: core::integer::u128
```