//! > Inlining attribute diagnostics
//! > test_runner_name
test_expr_diagnostics
//! > expr_code
{}
//! > module_code
#[inline(always)]
#[inline(never)]
#[inline(always, never)]
#[inline(1 + 1)]
#[inline]
fn foo() {}
//! > function_body
//! > expected_diagnostics
error[E2141]: Redundant `inline` attribute.
--> lib.cairo:2:3
#[inline(never)]
^^^^^^
error[E2140]: Unsupported `inline` arguments.
--> lib.cairo:3:9
#[inline(always, never)]
^^^^^^^^^^^^^^^
error[E2141]: Redundant `inline` attribute.
--> lib.cairo:3:3
#[inline(always, never)]
^^^^^^
error[E2140]: Unsupported `inline` arguments.
--> lib.cairo:4:9
#[inline(1 + 1)]
^^^^^^^
error[E2141]: Redundant `inline` attribute.
--> lib.cairo:4:3
#[inline(1 + 1)]
^^^^^^
error[E2141]: Redundant `inline` attribute.
--> lib.cairo:5:3
#[inline]
^^^^^^
//! > ==========================================================================
//! > Test that #[inline(always)] is not allowed for a free function with impl generic parameters.
//! > test_runner_name
test_expr_diagnostics
//! > expr_code
{}
//! > module_code
#[inline(always)]
fn foo<impl x: MyTrait>() {}
trait MyTrait;
//! > function_body
//! > expected_diagnostics
error[E2143]: `#[inline(always)]` is not allowed for functions with impl generic parameters.
--> lib.cairo:1:1
#[inline(always)]
^^^^^^^^^^^^^^^^^
//! > ==========================================================================
//! > Test that #[inline(always)] is not allowed for an impl function with impl generic parameters.
//! > test_runner_name
test_expr_diagnostics
//! > expr_code
{}
//! > module_code
trait MyTrait {
fn foo<impl y: MyTrait2>();
}
impl MyImpl of MyTrait {
#[inline(always)]
fn foo<impl y: MyTrait2>() {}
}
trait MyTrait2;
//! > function_body
//! > expected_diagnostics
error[E2143]: `#[inline(always)]` is not allowed for functions with impl generic parameters.
--> lib.cairo:5:5
#[inline(always)]
^^^^^^^^^^^^^^^^^
//! > ==========================================================================
//! > Test that 'inline' attribute is not allowed for extern functions.
//! > test_runner_name
test_expr_diagnostics
//! > expr_code
{}
//! > module_code
#[inline(always)]
extern fn foo() nopanic;
#[inline(never)]
extern fn bar() nopanic;
//! > function_body
//! > expected_diagnostics
error[E2142]: `inline` attribute is not allowed for extern functions.
--> lib.cairo:1:1
#[inline(always)]
^^^^^^^^^^^^^^^^^
error[E2142]: `inline` attribute is not allowed for extern functions.
--> lib.cairo:4:1
#[inline(never)]
^^^^^^^^^^^^^^^^