forked from VimPlug/jedi
basic lambda parsing
This commit is contained in:
@@ -369,7 +369,8 @@ class Function(Scope):
|
|||||||
def __init__(self, module, name, params, start_pos, annotation):
|
def __init__(self, module, name, params, start_pos, annotation):
|
||||||
super(Function, self).__init__(module, start_pos)
|
super(Function, self).__init__(module, start_pos)
|
||||||
self.name = name
|
self.name = name
|
||||||
name.parent = self.set_parent
|
if name is not None:
|
||||||
|
name.parent = self.set_parent
|
||||||
self.params = params
|
self.params = params
|
||||||
for p in params:
|
for p in params:
|
||||||
p.parent = self.set_parent
|
p.parent = self.set_parent
|
||||||
@@ -1530,6 +1531,22 @@ class PyFuzzyParser(object):
|
|||||||
tok_list.append(n)
|
tok_list.append(n)
|
||||||
string += ".".join(n.names)
|
string += ".".join(n.names)
|
||||||
continue
|
continue
|
||||||
|
elif tok == 'lambda':
|
||||||
|
params = []
|
||||||
|
start_pos = self.start_pos
|
||||||
|
while tok !=':':
|
||||||
|
param, tok = self._parse_statement(
|
||||||
|
added_breaks=[':', ','])
|
||||||
|
if param is None:
|
||||||
|
break
|
||||||
|
params.append(param)
|
||||||
|
if tok != ':':
|
||||||
|
continue
|
||||||
|
|
||||||
|
lambd = Lambda(self.module, params, start_pos)
|
||||||
|
ret, tok = self._parse_statement(added_breaks=[','])
|
||||||
|
if ret is not None:
|
||||||
|
lambd.returns.append(ret)
|
||||||
elif token_type == tokenize.NAME:
|
elif token_type == tokenize.NAME:
|
||||||
if tok == 'for':
|
if tok == 'for':
|
||||||
# list comprehensions!
|
# list comprehensions!
|
||||||
|
|||||||
Reference in New Issue
Block a user