diff --git a/language_server/server/indexing.py b/language_server/server/indexing.py index e97af16..675efed 100644 --- a/language_server/server/indexing.py +++ b/language_server/server/indexing.py @@ -3,7 +3,7 @@ import inspect import logging import types -from typing import Any, Generic, Optional, TypeVar, Union, cast, get_origin +from typing import Any, Generic, Optional, TypeVar, Union, Unpack, cast, get_origin import typing from beet.core.utils import extra_field @@ -44,14 +44,17 @@ def node_to_types(node: AstNode): - nodes = [] + types = [] for n in node.walk(): if isinstance(n, AstExpressionBinary) and n.operator == "|": continue - nodes.append(n) + annotation = expression_to_annotation(n) - return Union[*nodes] + if annotation is not UNKNOWN_TYPE: + types.append(annotation) + + return Union[Unpack[types]] @dataclass(frozen=True, slots=True)