summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2018-12-30 07:34:53 +0800
committerJohn Hodge <tpg@mutabah.net>2018-12-30 07:34:53 +0800
commite0353e87cda89f33c665e05963d6fd7893972063 (patch)
tree4878b16c462686d69113a597885926a3242530e3
parentaa3e514294a257fb5821533dfbfd02467cf0c9d0 (diff)
downloadmrust-e0353e87cda89f33c665e05963d6fd7893972063.tar.gz
Typecheck - Don't drop ManuallyDrop
-rw-r--r--src/hir_typeck/static.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/hir_typeck/static.cpp b/src/hir_typeck/static.cpp
index d40ee811..c9e2bae9 100644
--- a/src/hir_typeck/static.cpp
+++ b/src/hir_typeck/static.cpp
@@ -1928,6 +1928,12 @@ bool StaticTraitResolve::type_needs_drop_glue(const Span& sp, const ::HIR::TypeR
if( e.binding.is_Opaque() )
return true;
+ // In 1.29, "manually_drop" is a struct with special behaviour (instead of being a union)
+ if( TARGETVER_1_29 && e.path.m_data.as_Generic().m_path == m_crate.get_lang_item_path_opt("manually_drop") )
+ {
+ return false;
+ }
+
auto pp = ::HIR::PathParams();
bool has_direct_drop = this->find_impl(sp, m_lang_Drop, &pp, ty, [&](auto , bool){ return true; }, true);
if( has_direct_drop )