From a014d4fd38280d45cfbebae83bcc5e4b442b3e3c Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Mon, 29 Jun 2015 11:27:10 +0200 Subject: [PATCH] Fix a bug in call_of_name. It was possible to get a NAME(x) result when calling call_of_name on x, which shouldn't happen. It should just return x. --- jedi/evaluate/helpers.py | 3 +++ test/test_evaluate/test_helpers.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 test/test_evaluate/test_helpers.py diff --git a/jedi/evaluate/helpers.py b/jedi/evaluate/helpers.py index a42b62ab..9ae7bc03 100644 --- a/jedi/evaluate/helpers.py +++ b/jedi/evaluate/helpers.py @@ -86,6 +86,9 @@ def call_of_name(name, cut_own_trailer=False): par = name if tree.is_node(par.parent, 'trailer'): par = par.parent + if par.children[0] in ('(', '['): + # The trailer is not a NAME.NAME trailer, but a call to something. + return name power = par.parent if tree.is_node(power, 'power') and power.children[0] != name \ diff --git a/test/test_evaluate/test_helpers.py b/test/test_evaluate/test_helpers.py new file mode 100644 index 00000000..c245ee6b --- /dev/null +++ b/test/test_evaluate/test_helpers.py @@ -0,0 +1,16 @@ +from textwrap import dedent + +from jedi import names +from jedi.evaluate import helpers + + +def test_call_of_name_in_brackets(): + s = dedent(""" + x = 1 + type(x) + """) + last_x = names(s, references=True, definitions=False)[-1] + name = last_x._name + + call = helpers.call_of_name(name) + assert call == name