Procházet zdrojové kódy

Clean up some CopyOnWriteBlock details (#4493)

Jon Ross-Perkins před 1 rokem
rodič
revize
9aae9de43c

+ 2 - 3
toolchain/check/subst.cpp

@@ -139,9 +139,8 @@ static auto PopOperand(Context& context, Worklist& worklist, SemIR::IdKind kind,
       auto size = context.type_blocks().Get(old_type_block_id).size();
       SemIR::CopyOnWriteTypeBlock new_type_block(context.sem_ir(),
                                                  old_type_block_id);
-      for (auto i : llvm::index_range(0, size)) {
-        new_type_block.Set(size - i - 1,
-                           context.GetTypeIdForTypeInst(worklist.Pop()));
+      for (auto i : llvm::reverse(llvm::seq(size))) {
+        new_type_block.Set(i, context.GetTypeIdForTypeInst(worklist.Pop()));
       }
       return new_type_block.GetCanonical().index;
     }

+ 3 - 3
toolchain/sem_ir/copy_on_write_block.h

@@ -28,15 +28,15 @@ class CopyOnWriteBlock {
 
   // Constructs the block. `source_id` is used as the initial value of the
   // block.
-  CopyOnWriteBlock(SemIR::File& file, BlockIdType source_id)
+  explicit CopyOnWriteBlock(SemIR::File& file, BlockIdType source_id)
       : file_(file), source_id_(source_id) {}
 
   // Constructs the block, treating the original block as an uninitialized block
   // with `size` elements.
-  CopyOnWriteBlock(SemIR::File& file, UninitializedBlock uninit)
+  explicit CopyOnWriteBlock(SemIR::File& file, UninitializedBlock uninit)
       : file_(file),
         source_id_(BlockIdType::Invalid),
-        id_(file_.inst_blocks().AddUninitialized(uninit.size)) {}
+        id_((file_.*ValueStore)().AddUninitialized(uninit.size)) {}
 
   // Gets a block ID containing the resulting elements. Note that further
   // modifications may or may not allocate a new ID, so this should only be