diff --git a/mypy/nodes.py b/mypy/nodes.py
index 7272550..0a059d6 100644
--- a/mypy/nodes.py
+++ b/mypy/nodes.py
@@ -1625,9 +1625,9 @@
         return visitor.visit_member_expr(self)
 
 
-# Kinds of arguments
 @unique
 class ArgKind(Enum):
+    """Kinds of arguments"""
     # Positional argument
     ARG_POS = 0
     # Positional, optional argument (functions only, not calls)
@@ -1642,28 +1642,32 @@
     ARG_NAMED_OPT = 5
 
 
-def is_positional(self: ArgKind, star: bool = False) -> bool:
+def is_positional(kind: ArgKind, star: bool = False) -> bool:
     return (
-        self == ARG_POS
-        or self == ARG_OPT
-        or (star and self == ARG_STAR)
+        kind == ARG_POS
+        or kind == ARG_OPT
+        or (star and kind == ARG_STAR)
     )
 
-def is_named(self: ArgKind, star: bool = False) -> bool:
+
+def is_named(kind: ArgKind, star: bool = False) -> bool:
     return (
-        self == ARG_NAMED
-        or self == ARG_NAMED_OPT
-        or (star and self == ARG_STAR2)
+        kind == ARG_NAMED
+        or kind == ARG_NAMED_OPT
+        or (star and kind == ARG_STAR2)
     )
 
-def is_required(self: ArgKind) -> bool:
-    return self == ARG_POS or self == ARG_NAMED
 
-def is_optional(self: ArgKind) -> bool:
-    return self == ARG_OPT or self == ARG_NAMED_OPT
+def is_required(kind: ArgKind) -> bool:
+    return kind == ARG_POS or kind == ARG_NAMED
 
-def is_star(self: ArgKind) -> bool:
-    return self == ARG_STAR or self == ARG_STAR2
+
+def is_optional(kind: ArgKind) -> bool:
+    return kind == ARG_OPT or kind == ARG_NAMED_OPT
+
+
+def is_star(kind: ArgKind) -> bool:
+    return kind == ARG_STAR or kind == ARG_STAR2
 
 
 ARG_POS: Final = ArgKind.ARG_POS
diff --git a/mypy/semanal.py b/mypy/semanal.py
index f58f533..8b65bfa 100644
--- a/mypy/semanal.py
+++ b/mypy/semanal.py
@@ -76,8 +76,7 @@
     get_nongen_builtins, get_member_expr_fullname, REVEAL_TYPE,
     REVEAL_LOCALS, is_final_node, TypedDictExpr, type_aliases_source_versions,
     EnumCallExpr, RUNTIME_PROTOCOL_DECOS, FakeExpression, Statement, AssignmentExpr,
-    ParamSpecExpr, EllipsisExpr,
-    FuncBase, implicit_module_attrs,
+    ParamSpecExpr, EllipsisExpr, FuncBase, implicit_module_attrs, is_named
 )
 from mypy.tvar_scope import TypeVarLikeScope
 from mypy.typevars import fill_typevars
@@ -3142,7 +3141,7 @@
         contravariant = False
         upper_bound: Type = self.object_type()
         for param_value, param_name, param_kind in zip(args, names, kinds):
-            if not param_kind.is_named():
+            if not is_named(param_kind):
                 self.fail("Unexpected argument to TypeVar()", context)
                 return None
             if param_name == 'covariant':
