diff --git a/src/resolver/resolver.cc b/src/resolver/resolver.cc
index 65820f9..68ed46d 100644
--- a/src/resolver/resolver.cc
+++ b/src/resolver/resolver.cc
@@ -1565,7 +1565,7 @@
                     [&](const sem::Type* t, size_t i) -> const sem::Parameter* {
                       return builder_->create<sem::Parameter>(
                           nullptr,                   // declaration
-                          i,                         // index
+                          static_cast<uint32_t>(i),  // index
                           t->UnwrapRef(),            // type
                           ast::StorageClass::kNone,  // storage_class
                           ast::Access::kUndefined);  // access
diff --git a/src/writer/append_vector.cc b/src/writer/append_vector.cc
index a7a8728..cad3183 100644
--- a/src/writer/append_vector.cc
+++ b/src/writer/append_vector.cc
@@ -155,14 +155,15 @@
         return expr->Declaration();
       }));
   auto* constructor_target = b->create<sem::TypeConstructor>(
-      packed_sem_ty,
-      utils::Transform(packed,
-                       [&](const tint::sem::Expression* arg,
-                           size_t i) -> const sem::Parameter* {
-                         return b->create<sem::Parameter>(
-                             nullptr, i, arg->Type()->UnwrapRef(),
-                             ast::StorageClass::kNone, ast::Access::kUndefined);
-                       }));
+      packed_sem_ty, utils::Transform(packed,
+                                      [&](const tint::sem::Expression* arg,
+                                          size_t i) -> const sem::Parameter* {
+                                        return b->create<sem::Parameter>(
+                                            nullptr, static_cast<uint32_t>(i),
+                                            arg->Type()->UnwrapRef(),
+                                            ast::StorageClass::kNone,
+                                            ast::Access::kUndefined);
+                                      }));
   auto* constructor_sem = b->create<sem::Call>(
       constructor_ast, constructor_target, packed, statement, sem::Constant{});
   b->Sem().Add(constructor_ast, constructor_sem);
