summaryrefslogtreecommitdiff
path: root/src/hir_expand/annotate_value_usage.cpp
diff options
context:
space:
mode:
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);