diff options
author | Daniƫl van Noord <13665637+DanielNoord@users.noreply.github.com> | 2021-09-13 12:28:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-13 12:28:30 +0200 |
commit | af0724ba515b61dbdead945f43baf29116d44d4a (patch) | |
tree | 58920d6c71a85d4c972adf9316c4610b144c1a00 /astroid/brain/brain_dataclasses.py | |
parent | 741cd614d7cec1f730a66632f018ff0bcb17b561 (diff) | |
download | astroid-git-af0724ba515b61dbdead945f43baf29116d44d4a.tar.gz |
Fix crash on datafields (#1165)
* Fix crash on datafields
Fixes the crash reported at PyCQA/pylint#4963
Tests added there.
* Change to ``if not``
* Update astroid/brain/brain_dataclasses.py
* Add tests
* Update and merge test
* Use ``raise UseInferenceDefault``
Diffstat (limited to 'astroid/brain/brain_dataclasses.py')
-rw-r--r-- | astroid/brain/brain_dataclasses.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/astroid/brain/brain_dataclasses.py b/astroid/brain/brain_dataclasses.py index e010a514..0bd394e3 100644 --- a/astroid/brain/brain_dataclasses.py +++ b/astroid/brain/brain_dataclasses.py @@ -12,10 +12,16 @@ from typing import Generator, List, Optional, Tuple from astroid import context, inference_tip from astroid.builder import parse from astroid.const import PY37_PLUS, PY39_PLUS -from astroid.exceptions import AstroidSyntaxError, InferenceError, MroError +from astroid.exceptions import ( + AstroidSyntaxError, + InferenceError, + MroError, + UseInferenceDefault, +) from astroid.manager import AstroidManager from astroid.nodes.node_classes import ( AnnAssign, + Assign, AssignName, Attribute, Call, @@ -231,9 +237,11 @@ def infer_dataclass_attribute( def infer_dataclass_field_call( - node: AssignName, ctx: context.InferenceContext = None + node: Call, ctx: Optional[context.InferenceContext] = None ) -> Generator: """Inference tip for dataclass field calls.""" + if not isinstance(node.parent, (AnnAssign, Assign)): + raise UseInferenceDefault field_call = node.parent.value default_type, default = _get_field_default(field_call) if not default_type: |