From aa51a0f19ae571497a18d2f75e409a3944d4b736 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Sun, 15 Jan 2023 05:47:24 +0900 Subject: [PATCH] Add regression test for #92157 Signed-off-by: Yuki Okushi --- tests/ui/borrowck/issue-92157.rs | 40 ++++++++++++++++++++++++++++ tests/ui/borrowck/issue-92157.stderr | 11 ++++++++ 2 files changed, 51 insertions(+) create mode 100644 tests/ui/borrowck/issue-92157.rs create mode 100644 tests/ui/borrowck/issue-92157.stderr diff --git a/tests/ui/borrowck/issue-92157.rs b/tests/ui/borrowck/issue-92157.rs new file mode 100644 index 0000000000000..6ee2320a603ad --- /dev/null +++ b/tests/ui/borrowck/issue-92157.rs @@ -0,0 +1,40 @@ +#![feature(no_core)] +#![feature(lang_items)] + +#![no_core] + +#[cfg(target_os = "linux")] +#[link(name = "c")] +extern {} + +#[lang = "start"] +fn start(_main: fn() -> T, _argc: isize, _argv: *const *const u8) -> isize { + //~^ ERROR: incorrect number of parameters for the `start` lang item + 40+2 +} + +#[lang = "sized"] +pub trait Sized {} +#[lang = "copy"] +pub trait Copy {} + +#[lang = "drop_in_place"] +#[allow(unconditional_recursion)] +pub unsafe fn drop_in_place(to_drop: *mut T) { + drop_in_place(to_drop) +} + +#[lang = "add"] +trait Add { + type Output; + fn add(self, other: RHS) -> Self::Output; +} + +impl Add for isize { + type Output = isize; + fn add(self, other: isize) -> isize { + self + other + } +} + +fn main() {} diff --git a/tests/ui/borrowck/issue-92157.stderr b/tests/ui/borrowck/issue-92157.stderr new file mode 100644 index 0000000000000..a4010d73d057a --- /dev/null +++ b/tests/ui/borrowck/issue-92157.stderr @@ -0,0 +1,11 @@ +error: incorrect number of parameters for the `start` lang item + --> $DIR/issue-92157.rs:11:1 + | +LL | fn start(_main: fn() -> T, _argc: isize, _argv: *const *const u8) -> isize { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: the `start` lang item should have four parameters, but found 3 + = note: the `start` lang item should have the signature `fn(fn() -> T, isize, *const *const u8, u8) -> isize` + +error: aborting due to previous error +