Skip to content

Commit 6456726

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 9554470 commit 6456726

File tree

5 files changed

+18
-0
lines changed

5 files changed

+18
-0
lines changed

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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ class ResolveStmt : public ResolverBase
234234
redefined_error (r);
235235
});
236236

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

Lines changed: 7 additions & 0 deletions
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+
}
Lines changed: 8 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,5 @@ torture/name_resolve1.rs
2929
issue-3568.rs
3030
issue-3663.rs
3131
issue-3671.rs
32+
enum_discriminant2.rs
3233
# please don't delete the trailing newline

0 commit comments

Comments
 (0)