summaryrefslogtreecommitdiff
path: root/src/hir_expand/annotate_value_usage.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2019-02-09 22:32:40 +0800
committerJohn Hodge <tpg@ucc.asn.au>2019-02-09 22:32:40 +0800
commit054faa303107d5940463465d729cc0d1e2ec8473 (patch)
tree8d2c6948c3487ec4619ef51d1927ad0dc23adf60 /src/hir_expand/annotate_value_usage.cpp
parentf907e918d75bff4d0c5030fb5c626194c5f2dc89 (diff)
downloadmrust-054faa303107d5940463465d729cc0d1e2ec8473.tar.gz
Typecheck - Various fixes for librustc
Diffstat (limited to 'src/hir_expand/annotate_value_usage.cpp')
-rw-r--r--src/hir_expand/annotate_value_usage.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/hir_expand/annotate_value_usage.cpp b/src/hir_expand/annotate_value_usage.cpp
index 1754bdac..e763586c 100644
--- a/src/hir_expand/annotate_value_usage.cpp
+++ b/src/hir_expand/annotate_value_usage.cpp
@@ -520,6 +520,12 @@ namespace {
),
(Struct,
const auto& str = *pe.binding;
+ if( pe.is_wildcard() )
+ return ::HIR::ValueUsage::Borrow;
+ if( pe.sub_patterns.empty() && (TU_TEST1(str.m_data, Tuple, .empty()) || str.m_data.is_Unit()) ) {
+ return ::HIR::ValueUsage::Borrow;
+ }
+ ASSERT_BUG(sp, str.m_data.is_Named(), "Struct pattern on non-brace struct");
const auto& flds = str.m_data.as_Named();
auto monomorph_cb = monomorphise_type_get_cb(sp, nullptr, &pe.path.m_params, nullptr);