Skip to content

Commit ad60d8e

Browse files
Make sure to propagate result from visit_expr_fields
1 parent 3bc767e commit ad60d8e

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

compiler/rustc_ast/src/visit.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1420,7 +1420,7 @@ macro_rules! common_visitor_and_walkers {
14201420
let StructExpr { qself, path, fields, rest } = &$($mut)?**se;
14211421
try_visit!(vis.visit_qself(qself));
14221422
try_visit!(vis.visit_path(path));
1423-
visit_expr_fields(vis, fields);
1423+
try_visit!(visit_expr_fields(vis, fields));
14241424
match rest {
14251425
StructRest::Base(expr) => try_visit!(vis.visit_expr(expr)),
14261426
StructRest::Rest(_span) => {}

tests/ui/invalid/invalid-rustc_legacy_const_generics-issue-123077.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,11 @@ fn main() {
2828

2929
std::arch::x86_64::_mm_inserti_si64(loop {}, loop {}, || (), 1 + || ());
3030
//~^ ERROR invalid argument to a legacy const generic
31+
32+
// A regression test for <https://github.com/rust-lang/rust/issues/142525>.
33+
struct Struct<T> {
34+
field: T,
35+
}
36+
std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, Struct { field: || () });
37+
//~^ ERROR invalid argument to a legacy const generic
3138
}

tests/ui/invalid/invalid-rustc_legacy_const_generics-issue-123077.stderr

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,5 +84,17 @@ LL - std::arch::x86_64::_mm_inserti_si64(loop {}, loop {}, || (), 1 + || ())
8484
LL + std::arch::x86_64::_mm_inserti_si64::<{ || () }, { 1 + || () }>(loop {}, loop {});
8585
|
8686

87-
error: aborting due to 7 previous errors
87+
error: invalid argument to a legacy const generic: cannot have const blocks, closures, async blocks or items
88+
--> $DIR/invalid-rustc_legacy_const_generics-issue-123077.rs:36:71
89+
|
90+
LL | std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, Struct { field: || () });
91+
| ^^^^^
92+
|
93+
help: try using a const generic argument instead
94+
|
95+
LL - std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, Struct { field: || () });
96+
LL + std::arch::x86_64::_mm_blend_ps::<{ Struct { field: || () } }>(loop {}, loop {});
97+
|
98+
99+
error: aborting due to 8 previous errors
88100

0 commit comments

Comments
 (0)