bpo-43764: Fix `__match_args__` generation logic for dataclasses (GH-25284)

diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py
index afc4b82..ceda822 100644
--- a/Lib/dataclasses.py
+++ b/Lib/dataclasses.py
@@ -1017,7 +1017,7 @@ def _process_class(cls, init, repr, eq, order, unsafe_hash, frozen):
                        str(inspect.signature(cls)).replace(' -> NoneType', ''))
 
     if '__match_args__' not in cls.__dict__:
-        cls.__match_args__ = tuple(f.name for f in flds if f.init)
+        cls.__match_args__ = tuple(f.name for f in field_list if f.init)
 
     abc.update_abstractmethods(cls)
 
diff --git a/Lib/test/test_dataclasses.py b/Lib/test/test_dataclasses.py
index 12c1918..29f29e1 100644
--- a/Lib/test/test_dataclasses.py
+++ b/Lib/test/test_dataclasses.py
@@ -3432,6 +3432,14 @@ class C:
             __match_args__ = ma
         self.assertIs(C(42).__match_args__, ma)
 
+    def test_bpo_43764(self):
+        @dataclass(repr=False, eq=False, init=False)
+        class X:
+            a: int
+            b: int
+            c: int
+        self.assertEqual(X.__match_args__, ("a", "b", "c"))
+
 
 if __name__ == '__main__':
     unittest.main()
diff --git a/Misc/NEWS.d/next/Library/2021-04-08-09-59-20.bpo-43764.tHjO60.rst b/Misc/NEWS.d/next/Library/2021-04-08-09-59-20.bpo-43764.tHjO60.rst
new file mode 100644
index 0000000..838dd02
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2021-04-08-09-59-20.bpo-43764.tHjO60.rst
@@ -0,0 +1,2 @@
+Fix an issue where :data:`~object.__match_args__` generation could fail for
+some :mod:`dataclasses`.