Skip to content

Commit 3ff5f91

Browse files
committed
add name resolution processing for discriminant values
gcc/rust/ChangeLog: * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): add name resolution processing for discriminant values * resolve/rust-ast-resolve-stmt.h: add name resolution processing for discriminant values gcc/testsuite/ChangeLog: * rust/compile/nr2/exclude: Exclude enum_discriminant2.rs due to ICE * rust/compile/enum_discriminant2.rs: New test. * rust/compile/enum_discriminant3.rs: New test. Signed-off-by: Ryutaro Okada <[email protected]>
1 parent bdfdaef commit 3ff5f91

File tree

5 files changed

+18
-0
lines changed

5 files changed

+18
-0
lines changed

gcc/rust/resolve/rust-ast-resolve-item.cc

+1
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,7 @@ ResolveItem::visit (AST::EnumItemDiscriminant &item)
356356
auto cpath = canonical_prefix.append (decl);
357357

358358
mappings.insert_canonical_path (item.get_node_id (), cpath);
359+
ResolveExpr::go (item.get_expr (), path, cpath);
359360
}
360361

361362
void

gcc/rust/resolve/rust-ast-resolve-stmt.h

+1
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ class ResolveStmt : public ResolverBase
234234
rust_error_at (r, "defined multiple times");
235235
});
236236

237+
ResolveExpr::go (item.get_expr (), path, cpath);
237238
// Done, no fields.
238239
}
239240

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
fn main() {
2+
let y = 3;
3+
enum Foo {
4+
Bar = y,
5+
// { dg-error "cannot find value .y. in this scope" "" { target *-*-* } .-1 }
6+
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const x: isize = 1;
2+
// { dg-warning "unused name" "" { target *-*-* } .-1 }
3+
4+
fn main() {
5+
enum Foo {
6+
Bar = x,
7+
}
8+
}

gcc/testsuite/rust/compile/nr2/exclude

+1
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ torture/loop4.rs
2828
torture/loop8.rs
2929
torture/name_resolve1.rs
3030
issue-3568.rs
31+
enum_discriminant2.rs
3132
# please don't delete the trailing newline

0 commit comments

Comments
 (0)