summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/large_futures.fixed
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 18:31:44 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 18:31:44 +0000
commitc23a457e72abe608715ac76f076f47dc42af07a5 (patch)
tree2772049aaf84b5c9d0ed12ec8d86812f7a7904b6 /src/tools/clippy/tests/ui/large_futures.fixed
parentReleasing progress-linux version 1.73.0+dfsg1-1~progress7.99u1. (diff)
downloadrustc-c23a457e72abe608715ac76f076f47dc42af07a5.tar.xz
rustc-c23a457e72abe608715ac76f076f47dc42af07a5.zip
Merging upstream version 1.74.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/tools/clippy/tests/ui/large_futures.fixed')
-rw-r--r--src/tools/clippy/tests/ui/large_futures.fixed70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/tools/clippy/tests/ui/large_futures.fixed b/src/tools/clippy/tests/ui/large_futures.fixed
new file mode 100644
index 000000000..4c192d1c8
--- /dev/null
+++ b/src/tools/clippy/tests/ui/large_futures.fixed
@@ -0,0 +1,70 @@
+#![feature(generators)]
+#![warn(clippy::large_futures)]
+#![allow(clippy::never_loop)]
+#![allow(clippy::future_not_send)]
+#![allow(clippy::manual_async_fn)]
+
+async fn big_fut(_arg: [u8; 1024 * 16]) {}
+
+async fn wait() {
+ let f = async {
+ Box::pin(big_fut([0u8; 1024 * 16])).await;
+ //~^ ERROR: large future with a size of 16385 bytes
+ //~| NOTE: `-D clippy::large-futures` implied by `-D warnings`
+ };
+ Box::pin(f).await
+ //~^ ERROR: large future with a size of 16386 bytes
+}
+async fn calls_fut(fut: impl std::future::Future<Output = ()>) {
+ loop {
+ Box::pin(wait()).await;
+ //~^ ERROR: large future with a size of 16387 bytes
+ if true {
+ return fut.await;
+ } else {
+ Box::pin(wait()).await;
+ //~^ ERROR: large future with a size of 16387 bytes
+ }
+ }
+}
+
+pub async fn test() {
+ let fut = big_fut([0u8; 1024 * 16]);
+ Box::pin(foo()).await;
+ //~^ ERROR: large future with a size of 65540 bytes
+ Box::pin(calls_fut(fut)).await;
+ //~^ ERROR: large future with a size of 49159 bytes
+}
+
+pub fn foo() -> impl std::future::Future<Output = ()> {
+ async {
+ let x = [0i32; 1024 * 16];
+ async {}.await;
+ dbg!(x);
+ }
+}
+
+pub async fn lines() {
+ Box::pin(async {
+ //~^ ERROR: large future with a size of 65540 bytes
+ let x = [0i32; 1024 * 16];
+ async {}.await;
+ println!("{:?}", x);
+ })
+ .await;
+}
+
+pub async fn macro_expn() {
+ macro_rules! macro_ {
+ () => {
+ Box::pin(async {
+ let x = [0i32; 1024 * 16];
+ async {}.await;
+ println!("macro: {:?}", x);
+ })
+ };
+ }
+ macro_!().await
+}
+
+fn main() {}