Rollup merge of #75350 - estebank:foreign-fn-with-body-ice, r=davidtwco
Do not ICE when lowering invalid extern fn with bodies Fix #75283.
This commit is contained in:
commit
5369619693
@ -573,7 +573,9 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||||||
.resolver
|
.resolver
|
||||||
.trait_map()
|
.trait_map()
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(&k, v)| (self.node_id_to_hir_id[k].unwrap(), v.clone()))
|
.filter_map(|(&k, v)| {
|
||||||
|
self.node_id_to_hir_id.get(k).and_then(|id| id.as_ref()).map(|id| (*id, v.clone()))
|
||||||
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let mut def_id_to_hir_id = IndexVec::default();
|
let mut def_id_to_hir_id = IndexVec::default();
|
||||||
|
6
src/test/ui/issues/issue-75283.rs
Normal file
6
src/test/ui/issues/issue-75283.rs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
extern "C" {
|
||||||
|
fn lol() { //~ ERROR incorrect function inside `extern` block
|
||||||
|
println!("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn main() {}
|
18
src/test/ui/issues/issue-75283.stderr
Normal file
18
src/test/ui/issues/issue-75283.stderr
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
error: incorrect function inside `extern` block
|
||||||
|
--> $DIR/issue-75283.rs:2:8
|
||||||
|
|
|
||||||
|
LL | extern "C" {
|
||||||
|
| ---------- `extern` blocks define existing foreign functions and functions inside of them cannot have a body
|
||||||
|
LL | fn lol() {
|
||||||
|
| ________^^^___-
|
||||||
|
| | |
|
||||||
|
| | cannot have a body
|
||||||
|
LL | | println!("");
|
||||||
|
LL | | }
|
||||||
|
| |_____- help: remove the invalid body: `;`
|
||||||
|
|
|
||||||
|
= help: you might have meant to write a function accessible through FFI, which can be done by writing `extern fn` outside of the `extern` block
|
||||||
|
= note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
Loading…
Reference in New Issue
Block a user