about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir2
-rw-r--r--src/test/run-make/raw-dylib-alt-calling-convention/extern.c15
-rw-r--r--src/test/run-make/raw-dylib-alt-calling-convention/lib.rs9
-rw-r--r--src/test/run-make/raw-dylib-alt-calling-convention/output.msvc.txt1
-rw-r--r--src/test/run-make/raw-dylib-alt-calling-convention/output.txt2
-rw-r--r--src/test/run-make/raw-dylib-c/extern_1.c5
-rw-r--r--src/test/run-make/raw-dylib-c/lib.rs3
-rw-r--r--src/test/run-make/raw-dylib-c/output.txt1
-rw-r--r--src/test/run-make/raw-dylib-import-name-type/driver.rs46
-rw-r--r--src/test/run-make/raw-dylib-import-name-type/extern.c38
-rw-r--r--src/test/run-make/raw-dylib-import-name-type/extern.gnu.def3
-rw-r--r--src/test/run-make/raw-dylib-import-name-type/extern.msvc.def7
-rw-r--r--src/test/run-make/raw-dylib-import-name-type/output.txt7
-rw-r--r--src/test/rustdoc-json/type/extern.rs10
-rw-r--r--src/test/ui/closure-expected-type/expect-fn-supply-fn.stderr12
-rw-r--r--src/test/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.stderr2
-rw-r--r--src/test/ui/parser/suggest-assoc-const.fixed10
-rw-r--r--src/test/ui/parser/suggest-assoc-const.rs10
-rw-r--r--src/test/ui/parser/suggest-assoc-const.stderr8
-rw-r--r--src/test/ui/type-alias-impl-trait/closure_args.rs16
-rw-r--r--src/test/ui/type-alias-impl-trait/closure_args2.rs23
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-60371.stderr2
-rw-r--r--src/test/ui/unsized/issue-75899-but-gats.rs21
-rw-r--r--src/test/ui/unsized/issue-75899.rs18
24 files changed, 262 insertions, 9 deletions
diff --git a/src/test/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir b/src/test/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir
index 44b1a267b34..96fc7e6493a 100644
--- a/src/test/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir
+++ b/src/test/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir
@@ -14,7 +14,7 @@ fn main::{closure#0}(_1: &[closure@main::{closure#0}], _2: &i32) -> &i32 {
         StorageLive(_3);                 // scope 0 at $DIR/retag.rs:+1:13: +1:15
         _3 = _2;                         // scope 0 at $DIR/retag.rs:+1:18: +1:19
         Retag(_3);                       // scope 0 at $DIR/retag.rs:+1:18: +1:19
-        _0 = _2;                         // scope 1 at $DIR/retag.rs:+2:9: +2:10
+        _0 = &(*_2);                     // scope 1 at $DIR/retag.rs:+2:9: +2:10
         Retag(_0);                       // scope 1 at $DIR/retag.rs:+2:9: +2:10
         StorageDead(_3);                 // scope 0 at $DIR/retag.rs:+3:5: +3:6
         return;                          // scope 0 at $DIR/retag.rs:+3:6: +3:6
diff --git a/src/test/run-make/raw-dylib-alt-calling-convention/extern.c b/src/test/run-make/raw-dylib-alt-calling-convention/extern.c
index 0c4d12af9b2..344d4a6bf5a 100644
--- a/src/test/run-make/raw-dylib-alt-calling-convention/extern.c
+++ b/src/test/run-make/raw-dylib-alt-calling-convention/extern.c
@@ -70,6 +70,11 @@ __declspec(dllexport) void __stdcall stdcall_fn_9(uint8_t x, double y) {
     fflush(stdout);
 }
 
+__declspec(dllexport) void __stdcall stdcall_fn_10(int i) {
+    printf("stdcall_fn_10(%d)\n", i);
+    fflush(stdout);
+}
+
 __declspec(dllexport) void __fastcall fastcall_fn_1(int i) {
     printf("fastcall_fn_1(%d)\n", i);
     fflush(stdout);
@@ -122,6 +127,11 @@ __declspec(dllexport) void __fastcall fastcall_fn_9(uint8_t x, double y) {
     fflush(stdout);
 }
 
+__declspec(dllexport) void __fastcall fastcall_fn_10(int i) {
+    printf("fastcall_fn_10(%d)\n", i);
+    fflush(stdout);
+}
+
 // GCC doesn't support vectorcall: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89485
 #ifdef _MSC_VER
 __declspec(dllexport) void __vectorcall vectorcall_fn_1(int i) {
@@ -175,4 +185,9 @@ __declspec(dllexport) void __vectorcall vectorcall_fn_9(uint8_t x, double y) {
     printf("vectorcall_fn_9(%d, %.1f)\n", x, y);
     fflush(stdout);
 }
+
+__declspec(dllexport) void __vectorcall vectorcall_fn_10(int i) {
+    printf("vectorcall_fn_10(%d)\n", i);
+    fflush(stdout);
+}
 #endif
diff --git a/src/test/run-make/raw-dylib-alt-calling-convention/lib.rs b/src/test/run-make/raw-dylib-alt-calling-convention/lib.rs
index fe74fbfd264..22f222c12c3 100644
--- a/src/test/run-make/raw-dylib-alt-calling-convention/lib.rs
+++ b/src/test/run-make/raw-dylib-alt-calling-convention/lib.rs
@@ -32,6 +32,8 @@ extern "stdcall" {
     fn stdcall_fn_7(a: S2, b: i32);
     fn stdcall_fn_8(a: S3, b: S3);
     fn stdcall_fn_9(x: u8, y: f64);
+    #[link_name = "stdcall_fn_10"]
+    fn stdcall_fn_10_renamed(i: i32);
 }
 
 #[link(name = "extern", kind = "raw-dylib")]
@@ -45,6 +47,8 @@ extern "fastcall" {
     fn fastcall_fn_7(a: S2, b: i32);
     fn fastcall_fn_8(a: S3, b: S3);
     fn fastcall_fn_9(x: u8, y: f64);
+    #[link_name = "fastcall_fn_10"]
+    fn fastcall_fn_10_renamed(i: i32);
 }
 
 #[cfg(target_env = "msvc")]
@@ -59,6 +63,8 @@ extern "vectorcall" {
     fn vectorcall_fn_7(a: S2, b: i32);
     fn vectorcall_fn_8(a: S3, b: S3);
     fn vectorcall_fn_9(x: u8, y: f64);
+    #[link_name = "vectorcall_fn_10"]
+    fn vectorcall_fn_10_renamed(i: i32);
 }
 
 pub fn library_function(run_msvc_only: bool) {
@@ -73,6 +79,7 @@ pub fn library_function(run_msvc_only: bool) {
             stdcall_fn_7(S2 { x: 15, y: 16 }, 3);
             stdcall_fn_8(S3 { x: [1, 2, 3, 4, 5] }, S3 { x: [6, 7, 8, 9, 10] });
             stdcall_fn_9(1, 3.0);
+            stdcall_fn_10_renamed(19);
 
             fastcall_fn_1(14);
             fastcall_fn_2(16, 3.5);
@@ -81,6 +88,7 @@ pub fn library_function(run_msvc_only: bool) {
             fastcall_fn_6(Some(&S { x: 10, y: 12 }));
             fastcall_fn_8(S3 { x: [1, 2, 3, 4, 5] }, S3 { x: [6, 7, 8, 9, 10] });
             fastcall_fn_9(1, 3.0);
+            fastcall_fn_10_renamed(19);
         } else {
             // FIXME: 91167
             // rustc generates incorrect code for the calls to fastcall_fn_5 and fastcall_fn_7
@@ -100,6 +108,7 @@ pub fn library_function(run_msvc_only: bool) {
                 vectorcall_fn_7(S2 { x: 15, y: 16 }, 3);
                 vectorcall_fn_8(S3 { x: [1, 2, 3, 4, 5] }, S3 { x: [6, 7, 8, 9, 10] });
                 vectorcall_fn_9(1, 3.0);
+                vectorcall_fn_10_renamed(19);
             }
         }
     }
diff --git a/src/test/run-make/raw-dylib-alt-calling-convention/output.msvc.txt b/src/test/run-make/raw-dylib-alt-calling-convention/output.msvc.txt
index 9ddd1b11016..a216835c4b6 100644
--- a/src/test/run-make/raw-dylib-alt-calling-convention/output.msvc.txt
+++ b/src/test/run-make/raw-dylib-alt-calling-convention/output.msvc.txt
@@ -9,3 +9,4 @@ vectorcall_fn_6(S { x: 10, y: 12 })
 vectorcall_fn_7(S2 { x: 15, y: 16 }, 3)
 vectorcall_fn_8(S3 { x: [1, 2, 3, 4, 5] }, S3 { x: [6, 7, 8, 9, 10] })
 vectorcall_fn_9(1, 3.0)
+vectorcall_fn_10(19)
diff --git a/src/test/run-make/raw-dylib-alt-calling-convention/output.txt b/src/test/run-make/raw-dylib-alt-calling-convention/output.txt
index 348bad63ed0..7622d31618b 100644
--- a/src/test/run-make/raw-dylib-alt-calling-convention/output.txt
+++ b/src/test/run-make/raw-dylib-alt-calling-convention/output.txt
@@ -7,6 +7,7 @@ stdcall_fn_6(S { x: 10, y: 12 })
 stdcall_fn_7(S2 { x: 15, y: 16 }, 3)
 stdcall_fn_8(S3 { x: [1, 2, 3, 4, 5] }, S3 { x: [6, 7, 8, 9, 10] })
 stdcall_fn_9(1, 3.0)
+stdcall_fn_10(19)
 fastcall_fn_1(14)
 fastcall_fn_2(16, 3.5)
 fastcall_fn_3(3.5)
@@ -14,3 +15,4 @@ fastcall_fn_4(1, 2, 3.0)
 fastcall_fn_6(S { x: 10, y: 12 })
 fastcall_fn_8(S3 { x: [1, 2, 3, 4, 5] }, S3 { x: [6, 7, 8, 9, 10] })
 fastcall_fn_9(1, 3.0)
+fastcall_fn_10(19)
diff --git a/src/test/run-make/raw-dylib-c/extern_1.c b/src/test/run-make/raw-dylib-c/extern_1.c
index ab1dc3a4105..5d695547d0f 100644
--- a/src/test/run-make/raw-dylib-c/extern_1.c
+++ b/src/test/run-make/raw-dylib-c/extern_1.c
@@ -21,3 +21,8 @@ __declspec(dllexport) void extern_fn_with_long_name() {
     printf("extern_fn_with_long_name; got the rename\n");
     fflush(stdout);
 }
+
+__declspec(dllexport) void extern_fn_4() {
+    printf("extern_fn_4\n");
+    fflush(stdout);
+}
diff --git a/src/test/run-make/raw-dylib-c/lib.rs b/src/test/run-make/raw-dylib-c/lib.rs
index 74e0d3813d9..005ffcdda5c 100644
--- a/src/test/run-make/raw-dylib-c/lib.rs
+++ b/src/test/run-make/raw-dylib-c/lib.rs
@@ -16,12 +16,15 @@ pub fn library_function() {
         fn extern_fn_2();
         fn print_extern_variable();
         static mut extern_variable: i32;
+        #[link_name = "extern_fn_4"]
+        fn extern_fn_4_renamed();
     }
 
     unsafe {
         extern_fn_1();
         extern_fn_2();
         extern_fn_3();
+        extern_fn_4_renamed();
         extern_variable = 42;
         print_extern_variable();
         extern_variable = -42;
diff --git a/src/test/run-make/raw-dylib-c/output.txt b/src/test/run-make/raw-dylib-c/output.txt
index cd9fe47bee4..cc970cef7bc 100644
--- a/src/test/run-make/raw-dylib-c/output.txt
+++ b/src/test/run-make/raw-dylib-c/output.txt
@@ -1,5 +1,6 @@
 extern_fn_1
 extern_fn_2; didn't get the rename
 extern_fn_3
+extern_fn_4
 extern_variable value: 42
 extern_variable value: -42
diff --git a/src/test/run-make/raw-dylib-import-name-type/driver.rs b/src/test/run-make/raw-dylib-import-name-type/driver.rs
index 74e9a89fbdf..a38849fc813 100644
--- a/src/test/run-make/raw-dylib-import-name-type/driver.rs
+++ b/src/test/run-make/raw-dylib-import-name-type/driver.rs
@@ -1,8 +1,11 @@
 #![feature(raw_dylib)]
+#![feature(abi_vectorcall)]
 
 #[link(name = "extern", kind = "raw-dylib", import_name_type = "undecorated")]
 extern "C" {
     fn cdecl_fn_undecorated(i: i32);
+    #[link_name = "cdecl_fn_undecorated2"]
+    fn cdecl_fn_undecorated_renamed(i: i32);
     static mut extern_variable_undecorated: i32;
 }
 
@@ -21,6 +24,8 @@ extern "C" {
 #[link(name = "extern", kind = "raw-dylib", import_name_type = "undecorated")]
 extern "stdcall" {
     fn stdcall_fn_undecorated(i: i32);
+    #[link_name = "stdcall_fn_undecorated2"]
+    fn stdcall_fn_undecorated_renamed(i: i32);
 }
 
 #[link(name = "extern", kind = "raw-dylib", import_name_type = "noprefix")]
@@ -36,6 +41,8 @@ extern "stdcall" {
 #[link(name = "extern", kind = "raw-dylib", import_name_type = "undecorated")]
 extern "fastcall" {
     fn fastcall_fn_undecorated(i: i32);
+    #[link_name = "fastcall_fn_undecorated2"]
+    fn fastcall_fn_undecorated_renamed(i: i32);
 }
 
 #[link(name = "extern", kind = "raw-dylib", import_name_type = "noprefix")]
@@ -48,6 +55,26 @@ extern "fastcall" {
     fn fastcall_fn_decorated(i: i32);
 }
 
+#[cfg(target_env = "msvc")]
+#[link(name = "extern", kind = "raw-dylib", import_name_type = "undecorated")]
+extern "vectorcall" {
+    fn vectorcall_fn_undecorated(i: i32);
+    #[link_name = "vectorcall_fn_undecorated2"]
+    fn vectorcall_fn_undecorated_renamed(i: i32);
+}
+
+#[cfg(target_env = "msvc")]
+#[link(name = "extern", kind = "raw-dylib", import_name_type = "noprefix")]
+extern "vectorcall" {
+    fn vectorcall_fn_noprefix(i: i32);
+}
+
+#[cfg(target_env = "msvc")]
+#[link(name = "extern", kind = "raw-dylib", import_name_type = "decorated")]
+extern "vectorcall" {
+    fn vectorcall_fn_decorated(i: i32);
+}
+
 #[link(name = "extern", kind = "raw-dylib")]
 extern {
     fn print_extern_variable_undecorated();
@@ -58,14 +85,17 @@ extern {
 pub fn main() {
     unsafe {
         cdecl_fn_undecorated(1);
+        cdecl_fn_undecorated_renamed(10);
         cdecl_fn_noprefix(2);
         cdecl_fn_decorated(3);
 
         stdcall_fn_undecorated(4);
+        stdcall_fn_undecorated_renamed(14);
         stdcall_fn_noprefix(5);
         stdcall_fn_decorated(6);
 
         fastcall_fn_undecorated(7);
+        fastcall_fn_undecorated_renamed(17);
         fastcall_fn_noprefix(8);
         fastcall_fn_decorated(9);
 
@@ -75,5 +105,21 @@ pub fn main() {
         print_extern_variable_noprefix();
         extern_variable_decorated = 44;
         print_extern_variable_decorated();
+
+        // GCC doesn't support vectorcall: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89485
+        #[cfg(target_env = "msvc")]
+        {
+            vectorcall_fn_undecorated(10);
+            vectorcall_fn_undecorated_renamed(20);
+            vectorcall_fn_noprefix(11);
+            vectorcall_fn_decorated(12);
+        }
+        #[cfg(not(target_env = "msvc"))]
+        {
+            println!("vectorcall_fn_undecorated(10)");
+            println!("vectorcall_fn_undecorated2(20)");
+            println!("vectorcall_fn_noprefix(11)");
+            println!("vectorcall_fn_decorated(12)");
+        }
     }
 }
diff --git a/src/test/run-make/raw-dylib-import-name-type/extern.c b/src/test/run-make/raw-dylib-import-name-type/extern.c
index 1102158e249..195126d5129 100644
--- a/src/test/run-make/raw-dylib-import-name-type/extern.c
+++ b/src/test/run-make/raw-dylib-import-name-type/extern.c
@@ -6,6 +6,11 @@ void _cdecl cdecl_fn_undecorated(int i) {
     fflush(stdout);
 }
 
+void _cdecl cdecl_fn_undecorated2(int i) {
+    printf("cdecl_fn_undecorated2(%d)\n", i);
+    fflush(stdout);
+}
+
 void _cdecl cdecl_fn_noprefix(int i) {
     printf("cdecl_fn_noprefix(%d)\n", i);
     fflush(stdout);
@@ -21,6 +26,11 @@ void __stdcall stdcall_fn_undecorated(int i) {
     fflush(stdout);
 }
 
+void __stdcall stdcall_fn_undecorated2(int i) {
+    printf("stdcall_fn_undecorated2(%d)\n", i);
+    fflush(stdout);
+}
+
 void __stdcall stdcall_fn_noprefix(int i) {
     printf("stdcall_fn_noprefix(%d)\n", i);
     fflush(stdout);
@@ -36,6 +46,11 @@ void __fastcall fastcall_fn_undecorated(int i) {
     fflush(stdout);
 }
 
+void __fastcall fastcall_fn_undecorated2(int i) {
+    printf("fastcall_fn_undecorated2(%d)\n", i);
+    fflush(stdout);
+}
+
 void __fastcall fastcall_fn_noprefix(int i) {
     printf("fastcall_fn_noprefix(%d)\n", i);
     fflush(stdout);
@@ -63,3 +78,26 @@ __declspec(dllexport) void print_extern_variable_decorated() {
     printf("extern_variable_decorated value: %d\n", extern_variable_decorated);
     fflush(stdout);
 }
+
+// GCC doesn't support vectorcall: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89485
+#ifdef _MSC_VER
+void __vectorcall vectorcall_fn_undecorated(int i) {
+    printf("vectorcall_fn_undecorated(%d)\n", i);
+    fflush(stdout);
+}
+
+void __vectorcall vectorcall_fn_undecorated2(int i) {
+    printf("vectorcall_fn_undecorated2(%d)\n", i);
+    fflush(stdout);
+}
+
+void __vectorcall vectorcall_fn_noprefix(int i) {
+    printf("vectorcall_fn_noprefix(%d)\n", i);
+    fflush(stdout);
+}
+
+void __vectorcall vectorcall_fn_decorated(int i) {
+    printf("vectorcall_fn_decorated(%d)\n", i);
+    fflush(stdout);
+}
+#endif
diff --git a/src/test/run-make/raw-dylib-import-name-type/extern.gnu.def b/src/test/run-make/raw-dylib-import-name-type/extern.gnu.def
index f06ce67e030..a523c959a47 100644
--- a/src/test/run-make/raw-dylib-import-name-type/extern.gnu.def
+++ b/src/test/run-make/raw-dylib-import-name-type/extern.gnu.def
@@ -1,11 +1,14 @@
 LIBRARY extern
 EXPORTS
     cdecl_fn_undecorated
+    cdecl_fn_undecorated2
     cdecl_fn_noprefix
     cdecl_fn_decorated
     stdcall_fn_undecorated
+    stdcall_fn_undecorated2
     stdcall_fn_noprefix@4
     fastcall_fn_undecorated
+    fastcall_fn_undecorated2
     @fastcall_fn_decorated@4
 
     ;ld doesn't handle fully-decorated stdcall, or no-prefix fastcall
diff --git a/src/test/run-make/raw-dylib-import-name-type/extern.msvc.def b/src/test/run-make/raw-dylib-import-name-type/extern.msvc.def
index 9dc333707cb..dbff32d4c90 100644
--- a/src/test/run-make/raw-dylib-import-name-type/extern.msvc.def
+++ b/src/test/run-make/raw-dylib-import-name-type/extern.msvc.def
@@ -1,12 +1,19 @@
 LIBRARY extern
 EXPORTS
     cdecl_fn_undecorated
+    cdecl_fn_undecorated2
     cdecl_fn_noprefix
     cdecl_fn_decorated
     stdcall_fn_undecorated
+    stdcall_fn_undecorated2
     _stdcall_fn_decorated@4
     fastcall_fn_undecorated
+    fastcall_fn_undecorated2
     @fastcall_fn_decorated@4
+    vectorcall_fn_undecorated
+    vectorcall_fn_undecorated2
+    vectorcall_fn_decorated@@4
+    vectorcall_fn_noprefix@@4
 
     ;MSVC doesn't seem to recognize the "no prefix" syntax.
     stdcall_fn_noprefix@4=_stdcall_fn_noprefix@4
diff --git a/src/test/run-make/raw-dylib-import-name-type/output.txt b/src/test/run-make/raw-dylib-import-name-type/output.txt
index 855b20a8645..707faf403ae 100644
--- a/src/test/run-make/raw-dylib-import-name-type/output.txt
+++ b/src/test/run-make/raw-dylib-import-name-type/output.txt
@@ -1,12 +1,19 @@
 cdecl_fn_undecorated(1)
+cdecl_fn_undecorated2(10)
 cdecl_fn_noprefix(2)
 cdecl_fn_decorated(3)
 stdcall_fn_undecorated(4)
+stdcall_fn_undecorated2(14)
 stdcall_fn_noprefix(5)
 stdcall_fn_decorated(6)
 fastcall_fn_undecorated(7)
+fastcall_fn_undecorated2(17)
 fastcall_fn_noprefix(8)
 fastcall_fn_decorated(9)
 extern_variable_undecorated value: 42
 extern_variable_noprefix value: 43
 extern_variable_decorated value: 44
+vectorcall_fn_undecorated(10)
+vectorcall_fn_undecorated2(20)
+vectorcall_fn_noprefix(11)
+vectorcall_fn_decorated(12)
diff --git a/src/test/rustdoc-json/type/extern.rs b/src/test/rustdoc-json/type/extern.rs
new file mode 100644
index 00000000000..d287d5ebec5
--- /dev/null
+++ b/src/test/rustdoc-json/type/extern.rs
@@ -0,0 +1,10 @@
+#![feature(extern_types)]
+
+extern {
+    /// No inner information
+    pub type Foo;
+}
+
+// @is "$.index[*][?(@.docs=='No inner information')].name" '"Foo"'
+// @is "$.index[*][?(@.docs=='No inner information')].kind" '"foreign_type"'
+// @!has "$.index[*][?(@.docs=='No inner information')].inner"
diff --git a/src/test/ui/closure-expected-type/expect-fn-supply-fn.stderr b/src/test/ui/closure-expected-type/expect-fn-supply-fn.stderr
index 26f47eb684d..284fc1c21f5 100644
--- a/src/test/ui/closure-expected-type/expect-fn-supply-fn.stderr
+++ b/src/test/ui/closure-expected-type/expect-fn-supply-fn.stderr
@@ -25,8 +25,8 @@ error[E0308]: mismatched types
 LL |     with_closure_expecting_fn_with_free_region(|x: fn(&u32), y| {});
    |                                                 ^ one type is more general than the other
    |
-   = note: expected fn pointer `for<'r> fn(&'r u32)`
-              found fn pointer `fn(&u32)`
+   = note: expected fn pointer `fn(&u32)`
+              found fn pointer `for<'r> fn(&'r u32)`
 
 error[E0308]: mismatched types
   --> $DIR/expect-fn-supply-fn.rs:39:50
@@ -34,8 +34,8 @@ error[E0308]: mismatched types
 LL |     with_closure_expecting_fn_with_bound_region(|x: fn(&'x u32), y| {});
    |                                                  ^ one type is more general than the other
    |
-   = note: expected fn pointer `fn(&'x u32)`
-              found fn pointer `for<'r> fn(&'r u32)`
+   = note: expected fn pointer `for<'r> fn(&'r u32)`
+              found fn pointer `fn(&u32)`
 
 error[E0308]: mismatched types
   --> $DIR/expect-fn-supply-fn.rs:48:50
@@ -43,8 +43,8 @@ error[E0308]: mismatched types
 LL |     with_closure_expecting_fn_with_bound_region(|x: Foo<'_>, y| {
    |                                                  ^ one type is more general than the other
    |
-   = note: expected fn pointer `fn(&u32)`
-              found fn pointer `for<'r> fn(&'r u32)`
+   = note: expected fn pointer `for<'r> fn(&'r u32)`
+              found fn pointer `fn(&u32)`
 
 error: aborting due to 5 previous errors
 
diff --git a/src/test/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.stderr b/src/test/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.stderr
index db7586bee49..d5432755cfe 100644
--- a/src/test/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.stderr
+++ b/src/test/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.stderr
@@ -6,7 +6,7 @@ LL |     with_closure(|x: u32, y| {});
    |
 help: consider giving this closure parameter an explicit type
    |
-LL |     with_closure(|x: u32, y: B| {});
+LL |     with_closure(|x: u32, y: _| {});
    |                            +++
 
 error: aborting due to previous error
diff --git a/src/test/ui/parser/suggest-assoc-const.fixed b/src/test/ui/parser/suggest-assoc-const.fixed
new file mode 100644
index 00000000000..259f37b23a5
--- /dev/null
+++ b/src/test/ui/parser/suggest-assoc-const.fixed
@@ -0,0 +1,10 @@
+// Issue: 101797, Suggest associated const for incorrect use of let in traits
+// run-rustfix
+trait Trait {
+    const _X: i32;
+    //~^ ERROR non-item in item list
+}
+
+fn main() {
+
+}
diff --git a/src/test/ui/parser/suggest-assoc-const.rs b/src/test/ui/parser/suggest-assoc-const.rs
new file mode 100644
index 00000000000..c7be712ec07
--- /dev/null
+++ b/src/test/ui/parser/suggest-assoc-const.rs
@@ -0,0 +1,10 @@
+// Issue: 101797, Suggest associated const for incorrect use of let in traits
+// run-rustfix
+trait Trait {
+    let _X: i32;
+    //~^ ERROR non-item in item list
+}
+
+fn main() {
+
+}
diff --git a/src/test/ui/parser/suggest-assoc-const.stderr b/src/test/ui/parser/suggest-assoc-const.stderr
new file mode 100644
index 00000000000..2ddfa07c5be
--- /dev/null
+++ b/src/test/ui/parser/suggest-assoc-const.stderr
@@ -0,0 +1,8 @@
+error: non-item in item list
+  --> $DIR/suggest-assoc-const.rs:4:5
+   |
+LL |     let _X: i32;
+   |     ^^^ help: consider using `const` instead of `let` for associated const: `const`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/type-alias-impl-trait/closure_args.rs b/src/test/ui/type-alias-impl-trait/closure_args.rs
new file mode 100644
index 00000000000..c5e7af81d3d
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/closure_args.rs
@@ -0,0 +1,16 @@
+// check-pass
+
+// regression test for https://github.com/rust-lang/rust/issues/100800
+
+#![feature(type_alias_impl_trait)]
+
+trait Anything {}
+impl<T> Anything for T {}
+type Input = impl Anything;
+fn run<F: FnOnce(Input) -> ()>(f: F, i: Input) {
+    f(i);
+}
+
+fn main() {
+    run(|x: u32| {println!("{x}");}, 0);
+}
diff --git a/src/test/ui/type-alias-impl-trait/closure_args2.rs b/src/test/ui/type-alias-impl-trait/closure_args2.rs
new file mode 100644
index 00000000000..82386c280a8
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/closure_args2.rs
@@ -0,0 +1,23 @@
+// run-pass
+
+#![feature(type_alias_impl_trait)]
+
+trait Foo {
+    // This was reachable in https://github.com/rust-lang/rust/issues/100800
+    fn foo(&self) { unreachable!() }
+}
+impl<T> Foo for T {}
+
+struct B;
+impl B {
+    fn foo(&self) {}
+}
+
+type Input = impl Foo;
+fn run1<F: FnOnce(Input)>(f: F, i: Input) {f(i)}
+fn run2<F: FnOnce(B)>(f: F, i: B) {f(i)}
+
+fn main() {
+    run1(|x: B| {x.foo()}, B);
+    run2(|x: B| {x.foo()}, B);
+}
diff --git a/src/test/ui/type-alias-impl-trait/issue-60371.stderr b/src/test/ui/type-alias-impl-trait/issue-60371.stderr
index 082b0f0c309..d0c04371bd7 100644
--- a/src/test/ui/type-alias-impl-trait/issue-60371.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-60371.stderr
@@ -11,7 +11,7 @@ error[E0277]: the trait bound `(): Bug` is not satisfied
   --> $DIR/issue-60371.rs:10:40
    |
 LL |     const FUN: fn() -> Self::Item = || ();
-   |                                        ^ the trait `Bug` is not implemented for `()`
+   |                                        ^^ the trait `Bug` is not implemented for `()`
    |
    = help: the trait `Bug` is implemented for `&()`
 
diff --git a/src/test/ui/unsized/issue-75899-but-gats.rs b/src/test/ui/unsized/issue-75899-but-gats.rs
new file mode 100644
index 00000000000..5716817f43d
--- /dev/null
+++ b/src/test/ui/unsized/issue-75899-but-gats.rs
@@ -0,0 +1,21 @@
+// check-pass
+
+use std::fmt::Debug;
+use std::marker::PhantomData;
+
+trait Foo {
+    type Gat<'a>: ?Sized where Self: 'a;
+}
+
+struct Bar<'a, T: Foo + 'a>(T::Gat<'a>);
+
+struct Baz<T: ?Sized>(PhantomData<T>);
+
+impl<T: ?Sized> Foo for Baz<T> {
+    type Gat<'a> = T where Self: 'a;
+}
+
+fn main() {
+    let x = Bar::<'_, Baz<()>>(());
+    let y: &Bar<'_, Baz<dyn Debug>> = &x;
+}
diff --git a/src/test/ui/unsized/issue-75899.rs b/src/test/ui/unsized/issue-75899.rs
new file mode 100644
index 00000000000..abff17e11b5
--- /dev/null
+++ b/src/test/ui/unsized/issue-75899.rs
@@ -0,0 +1,18 @@
+// check-pass
+
+trait Trait {}
+impl<T> Trait for T {}
+
+trait Noop {
+    type Assoc: ?Sized;
+}
+impl<T: ?Sized> Noop for T {
+    type Assoc = T;
+}
+
+struct NoopNewtype<T: ?Sized + Noop>(T::Assoc);
+fn coerce_newtype<T: Trait>(x: &NoopNewtype<T>) -> &NoopNewtype<dyn Trait + '_> {
+    x
+}
+
+fn main() {}