192 lines
3.6 KiB
Rust
192 lines
3.6 KiB
Rust
|
//@aux-build:macro_rules.rs
|
||
|
#![rustfmt::skip]
|
||
|
#![feature(custom_inner_attributes)]
|
||
|
#![allow(unused)]
|
||
|
#![allow(clippy::let_and_return)]
|
||
|
#![allow(clippy::redundant_closure_call)]
|
||
|
#![allow(clippy::no_effect)]
|
||
|
#![allow(clippy::unnecessary_operation)]
|
||
|
#![allow(clippy::never_loop)]
|
||
|
#![warn(clippy::excessive_nesting)]
|
||
|
#![allow(clippy::collapsible_if)]
|
||
|
|
||
|
#[macro_use]
|
||
|
extern crate macro_rules;
|
||
|
|
||
|
static X: u32 = {
|
||
|
let x = {
|
||
|
let y = {
|
||
|
let z = {
|
||
|
let w = { 3 };
|
||
|
w
|
||
|
};
|
||
|
z
|
||
|
};
|
||
|
y
|
||
|
};
|
||
|
x
|
||
|
};
|
||
|
|
||
|
macro_rules! xx {
|
||
|
() => {{
|
||
|
{
|
||
|
{
|
||
|
{
|
||
|
{
|
||
|
{
|
||
|
{
|
||
|
{
|
||
|
{
|
||
|
{
|
||
|
{
|
||
|
println!("ehe");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}};
|
||
|
}
|
||
|
|
||
|
struct A;
|
||
|
|
||
|
impl A {
|
||
|
pub fn a(&self, v: u32) {
|
||
|
struct B;
|
||
|
|
||
|
impl B {
|
||
|
pub fn b() {
|
||
|
struct C;
|
||
|
|
||
|
impl C {
|
||
|
pub fn c() {}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
struct D { d: u32 }
|
||
|
|
||
|
trait Lol {
|
||
|
fn lmao() {
|
||
|
fn bb() {
|
||
|
fn cc() {
|
||
|
let x = { 1 }; // not a warning
|
||
|
}
|
||
|
|
||
|
let x = { 1 }; // warning
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
use a::{b::{c::{d::{e::{f::{}}}}}}; // should not lint
|
||
|
|
||
|
pub mod a {
|
||
|
pub mod b {
|
||
|
pub mod c {
|
||
|
pub mod d {
|
||
|
pub mod e {
|
||
|
pub mod f {}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fn a_but_not(v: u32) {}
|
||
|
|
||
|
fn main() {
|
||
|
let a = A;
|
||
|
|
||
|
a_but_not({{{{{{{{0}}}}}}}});
|
||
|
a.a({{{{{{{{{0}}}}}}}}});
|
||
|
(0, {{{{{{{1}}}}}}});
|
||
|
|
||
|
if true {
|
||
|
if true {
|
||
|
if true {
|
||
|
if true {
|
||
|
if true {
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
let y = (|| {
|
||
|
let x = (|| {
|
||
|
let y = (|| {
|
||
|
let z = (|| {
|
||
|
let w = { 3 };
|
||
|
w
|
||
|
})();
|
||
|
z
|
||
|
})();
|
||
|
y
|
||
|
})();
|
||
|
x
|
||
|
})();
|
||
|
|
||
|
excessive_nesting!(); // ensure this isn't linted in external macros
|
||
|
xx!();
|
||
|
let boo = true;
|
||
|
!{boo as u32 + !{boo as u32 + !{boo as u32}}};
|
||
|
|
||
|
let mut y = 1;
|
||
|
y += {{{{{5}}}}};
|
||
|
let z = y + {{{{{{{{{5}}}}}}}}};
|
||
|
[0, {{{{{{{{{{0}}}}}}}}}}];
|
||
|
let mut xx = [0; {{{{{{{{100}}}}}}}}];
|
||
|
xx[{{{{{{{{{{{{{{{{{{{{{{{{3}}}}}}}}}}}}}}}}}}}}}}}}];
|
||
|
&mut {{{{{{{{{{y}}}}}}}}}};
|
||
|
|
||
|
for i in {{{{xx}}}} {{{{{{{{}}}}}}}}
|
||
|
|
||
|
while let Some(i) = {{{{{{Some(1)}}}}}} {{{{{{{}}}}}}}
|
||
|
|
||
|
while {{{{{{{{true}}}}}}}} {{{{{{{{{}}}}}}}}}
|
||
|
|
||
|
let d = D { d: {{{{{{{{{{{{{{{{{{{{{{{3}}}}}}}}}}}}}}}}}}}}}}} };
|
||
|
|
||
|
{{{{1;}}}}..{{{{{{3}}}}}};
|
||
|
{{{{1;}}}}..={{{{{{{{{{{{{{{{{{{{{{{{{{6}}}}}}}}}}}}}}}}}}}}}}}}}};
|
||
|
..{{{{{{{5}}}}}}};
|
||
|
..={{{{{3}}}}};
|
||
|
{{{{{1;}}}}}..;
|
||
|
|
||
|
loop { break {{{{1}}}} };
|
||
|
loop {{{{{{}}}}}}
|
||
|
|
||
|
match {{{{{{true}}}}}} {
|
||
|
true => {{{{}}}},
|
||
|
false => {{{{}}}},
|
||
|
}
|
||
|
|
||
|
{
|
||
|
{
|
||
|
{
|
||
|
{
|
||
|
println!("warning! :)");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async fn b() -> u32 {
|
||
|
async fn c() -> u32 {{{{{{{0}}}}}}}
|
||
|
|
||
|
c().await
|
||
|
}
|
||
|
|
||
|
async fn a() {
|
||
|
{{{{b().await}}}};
|
||
|
}
|