@@ -1876,6 +1876,8 @@ fn type_is_pod(cx: ctxt, ty: t) -> bool {
1876
1876
ty_type | ty_ptr( _) { result = true; }
1877
1877
// Boxed types
1878
1878
ty_str | ty_box( _) | ty_uniq( _) | ty_vec( _) | ty_fn( _) |
1879
+ ty_estr( vstore_uniq) | ty_estr( vstore_box) |
1880
+ ty_evec( _, vstore_uniq) | ty_evec( _, vstore_box) |
1879
1881
ty_iface( _, _) | ty_rptr( _, _) | ty_opaque_box { result = false; }
1880
1882
// Structural types
1881
1883
ty_enum( did, substs) {
@@ -1897,7 +1899,7 @@ fn type_is_pod(cx: ctxt, ty: t) -> bool {
1897
1899
for elts. each { |elt| if !type_is_pod( cx, elt) { result = false; } }
1898
1900
}
1899
1901
ty_estr( vstore_fixed( _) ) { result = true; }
1900
- ty_evec( mt, vstore_fixed( _) ) {
1902
+ ty_evec( mt, vstore_fixed( _) ) | ty_unboxed_vec ( mt ) {
1901
1903
result = type_is_pod( cx, mt. ty) ;
1902
1904
}
1903
1905
ty_res( _, inner, substs) {
@@ -1913,7 +1915,14 @@ fn type_is_pod(cx: ctxt, ty: t) -> bool {
1913
1915
type_is_pod( cx, sty)
1914
1916
} ;
1915
1917
}
1916
- _ { cx. sess. bug( "unexpected type in type_is_pod") ; }
1918
+
1919
+ ty_estr( vstore_slice( * ) ) | ty_evec( _, vstore_slice( * ) ) {
1920
+ result = false;
1921
+ }
1922
+
1923
+ ty_var( * ) | ty_var_integral( * ) | ty_self( * ) {
1924
+ cx. sess. bug( "non concrete type in type_is_pod") ;
1925
+ }
1917
1926
}
1918
1927
1919
1928
ret result;
0 commit comments