Fix typos. (#179)

diff --git a/compiler/util/ir_data_fields.py b/compiler/util/ir_data_fields.py
index 248518b..76df36c 100644
--- a/compiler/util/ir_data_fields.py
+++ b/compiler/util/ir_data_fields.py
@@ -241,7 +241,7 @@
 
     # Pre-python 3.11 (maybe pre 3.10) `get_type_hints` will substitute
     # `builtins.Expression` for 'Expression' rather than `ir_data.Expression`.
-    # Instead we manually subsitute the type by extracting the list of classes
+    # Instead we manually substitute the type by extracting the list of classes
     # from the class' module and manually substituting.
     mod_ns = {
         k: v
@@ -291,7 +291,7 @@
 
 
 def field_specs(obj: Union[IrDataT, type[IrDataT]]) -> Mapping[str, FieldSpec]:
-    """Retrieves the fields specs for the the give data type.
+    """Retrieves the fields specs for the give data type.
 
     The results of this method are cached to reduce lookup overhead.
 
@@ -339,7 +339,7 @@
 #    `all_field_specs` dict.
 # 3. Copied lists are wrapped in a `TemporaryCopyValuesList`. This is used to
 #    signal to consumers that they can take ownership of the contained list
-#    rather than copying it again. See `ir_data.Message()` and `udpate()` for
+#    rather than copying it again. See `ir_data.Message()` and `update()` for
 #    where this is used.
 # 4. `FieldSpec` checks are cached including `is_dataclass` and `is_sequence`.
 # 5. None checks are only done in `copy()`, `_copy_set_fields` only
diff --git a/compiler/util/ir_data_fields_test.py b/compiler/util/ir_data_fields_test.py
index 103c1ad..9f411e6 100644
--- a/compiler/util/ir_data_fields_test.py
+++ b/compiler/util/ir_data_fields_test.py
@@ -86,7 +86,7 @@
 
 
 class OneOfTest(unittest.TestCase):
-    """Tests for the the various oneof field helpers."""
+    """Tests for the various oneof field helpers."""
 
     def test_field_attribute(self):
         """Test the `oneof_field` helper."""
diff --git a/compiler/util/traverse_ir.py b/compiler/util/traverse_ir.py
index a6c3dda..4594036 100644
--- a/compiler/util/traverse_ir.py
+++ b/compiler/util/traverse_ir.py
@@ -26,8 +26,9 @@
     """Provides a template for setting up a generic call to a function.
 
     The function parameters are inspected at run-time to build up a set of valid
-    and required arguments. When invoking the function unneccessary parameters
-    will be trimmed out. If arguments are missing an assertion will be triggered.
+    and required arguments. When invoking the function unnecessary parameters
+    will be trimmed out. If arguments are missing an assertion will be
+    triggered.
 
     This is currently limited to functions that have at least one positional
     parameter.
diff --git a/testdata/BUILD b/testdata/BUILD
index 923dcf3..f8a1be7 100644
--- a/testdata/BUILD
+++ b/testdata/BUILD
@@ -108,7 +108,7 @@
     srcs = [
         "enum.emb",
     ],
-    # This tag is arbitrary, and exists to ensure you can pass atributes common
+    # This tag is arbitrary, and exists to ensure you can pass attributes common
     # to all build rules to the underlying rules.
     tags = ["an_arbitrary_tag"],
 )