about summary refs log tree commit diff
path: root/src/comp/middle
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp/middle')
-rw-r--r--src/comp/middle/kind.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/comp/middle/kind.rs b/src/comp/middle/kind.rs
index f4c23d3d4d7..da908f55429 100644
--- a/src/comp/middle/kind.rs
+++ b/src/comp/middle/kind.rs
@@ -189,6 +189,9 @@ fn need_shared_or_pinned_ctor(tcx: ty::ctxt, a: @ast::expr, descr: str) {
           ast::expr_tup(_) {
             true
           }
+          ast::expr_vec(exprs, _) {
+            true
+          }
           _ { false }
         }
     }
@@ -262,6 +265,13 @@ fn check_expr(tcx: ty::ctxt, e: @ast::expr) {
             need_shared_or_pinned_ctor(tcx, expr, "tuple parameter");
         }
       }
+      ast::expr_vec(exprs, _) {
+        // Putting pinned things into vectors is pretty useless since vector
+        // addition can't work (it's a copy)
+        for expr in exprs {
+            need_expr_kind(tcx, expr, ast::kind_shared, "vector element");
+        }
+      }
       _ { }
     }
 }