diff options
author | Philip Herron <herron.philip@googlemail.com> | 2024-11-05 17:35:37 +0000 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2025-03-21 12:32:56 +0100 |
commit | 87e4dcd782013a10de2a1cac8ff0364e5ff06bda (patch) | |
tree | 1e776f7d3f2f8bf06dbf15cbc58ec2dc1770d201 /gcc | |
parent | 2d0fc643a0c837064f92f0b3122988b841b74b5f (diff) | |
download | gcc-87e4dcd782013a10de2a1cac8ff0364e5ff06bda.zip gcc-87e4dcd782013a10de2a1cac8ff0364e5ff06bda.tar.gz gcc-87e4dcd782013a10de2a1cac8ff0364e5ff06bda.tar.bz2 |
gccrs: fix ICE for placeholder which is not setup
We can have a case where the placeholder is not configred and the
can_resolve check is not detecting this case which can lead to ICE.
gcc/rust/ChangeLog:
* typecheck/rust-tyty.cc (PlaceholderType::can_resolve): check for empty mappings
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/typecheck/rust-tyty.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/rust/typecheck/rust-tyty.cc b/gcc/rust/typecheck/rust-tyty.cc index 1812c61..068e390 100644 --- a/gcc/rust/typecheck/rust-tyty.cc +++ b/gcc/rust/typecheck/rust-tyty.cc @@ -3543,7 +3543,17 @@ bool PlaceholderType::can_resolve () const { auto context = Resolver::TypeCheckContext::get (); - return context->lookup_associated_type_mapping (get_ty_ref (), nullptr); + + BaseType *lookup = nullptr; + HirId mapping; + + if (!context->lookup_associated_type_mapping (get_ty_ref (), &mapping)) + return false; + + if (!context->lookup_type (mapping, &lookup)) + return false; + + return lookup != nullptr; } BaseType * |