forked from VimPlug/jedi
Handle generics appearing within quoted return annotations
This ensures that these quoted likely forwards references in return type annotations behave like their non-quoted equivalents. I suspect there may be other places which will need similar adjustments, which may mean that we should push the conversion a layer closer to the parsing (perhaps in `py__annotations__`?). One case I know that this doesn't solve (but which likely needs similar adjustment) is generics in return types of comment-style annotations. They're less likely and may not be worth supporting since all supported Python versions can use the in-syntax spelling for annotations at this point.
This commit is contained in:
@@ -222,6 +222,18 @@ def infer_return_types(function, arguments):
|
||||
match.group(1).strip()
|
||||
).execute_annotation()
|
||||
|
||||
elif annotation.type == 'string':
|
||||
annotation = _get_forward_reference_node(
|
||||
context,
|
||||
context.inference_state.compiled_subprocess.safe_literal_eval(
|
||||
annotation.value,
|
||||
),
|
||||
)
|
||||
# The forward reference tree has an additional root node ('eval_input')
|
||||
# that we don't want. Extract the node we do want, that is equivalent to
|
||||
# the nodes returned by `py__annotations__` for a non-quoted annotation.
|
||||
annotation = annotation.children[0]
|
||||
|
||||
unknown_type_vars = find_unknown_type_vars(context, annotation)
|
||||
annotation_values = infer_annotation(context, annotation)
|
||||
if not unknown_type_vars:
|
||||
|
||||
Reference in New Issue
Block a user