Set lineno and end_lineno on Arguments (#2865)

diff --git a/ChangeLog b/ChangeLog
index 4225d5f..6c662b9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -16,6 +16,8 @@
   Closes #2741
   Closes pylint-dev/pylint#6094
 
+* ``lineno`` and ``end_lineno`` are now available on ``Arguments``.
+
 * Add helper to iterate over all annotations nodes of function arguments,
   ``Arguments.get_annotations()``.
 
diff --git a/astroid/rebuilder.py b/astroid/rebuilder.py
index 97f3a39..f7d38a9 100644
--- a/astroid/rebuilder.py
+++ b/astroid/rebuilder.py
@@ -9,6 +9,7 @@
 from __future__ import annotations
 
 import ast
+import itertools
 import sys
 import token
 from collections.abc import Callable, Collection, Generator
@@ -589,6 +590,16 @@
             type_comment_kwonlyargs=type_comment_kwonlyargs,
             type_comment_posonlyargs=type_comment_posonlyargs,
         )
+        if start_end_lineno_pairs := [
+            (arg.lineno, arg.end_lineno)
+            for arg in itertools.chain(
+                node.args, node.posonlyargs, node.kwonlyargs, [node.vararg, node.kwarg]
+            )
+            if arg
+        ]:
+            newnode.lineno = min(startend[0] for startend in start_end_lineno_pairs)
+            newnode.end_lineno = max(startend[1] for startend in start_end_lineno_pairs)
+
         # save argument names in locals:
         assert newnode.parent
         if vararg:
diff --git a/tests/test_nodes_lineno.py b/tests/test_nodes_lineno.py
index f8c6f91..25fb339 100644
--- a/tests/test_nodes_lineno.py
+++ b/tests/test_nodes_lineno.py
@@ -589,6 +589,8 @@
         assert (f1.body[0].lineno, f1.body[0].col_offset) == (6, 4)
         assert (f1.body[0].end_lineno, f1.body[0].end_col_offset) == (6, 8)
 
+        assert (f1.args.lineno, f1.args.end_lineno) == (2, 4)
+
         # pos only arguments
         # TODO fix column offset: arg -> arg (AssignName)
         assert isinstance(f1.args.posonlyargs[0], nodes.AssignName)