summaryrefslogtreecommitdiff
path: root/astroid/brain/brain_dataclasses.py
diff options
context:
space:
mode:
authorDaniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>2021-09-13 12:28:30 +0200
committerGitHub <noreply@github.com>2021-09-13 12:28:30 +0200
commitaf0724ba515b61dbdead945f43baf29116d44d4a (patch)
tree58920d6c71a85d4c972adf9316c4610b144c1a00 /astroid/brain/brain_dataclasses.py
parent741cd614d7cec1f730a66632f018ff0bcb17b561 (diff)
downloadastroid-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.py12
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: