MCPcopy Index your code
hub / github.com/nodejs/node / parse_call

Method parse_call

tools/inspector_protocol/jinja2/parser.py:753–798  ·  view source on GitHub ↗
(self, node)

Source from the content-addressed store, hash-verified

751 return nodes.Slice(lineno=lineno, *args)
752
753 def parse_call(self, node):
754 token = self.stream.expect('lparen')
755 args = []
756 kwargs = []
757 dyn_args = dyn_kwargs = None
758 require_comma = False
759
760 def ensure(expr):
761 if not expr:
762 self.fail('invalid syntax for function call expression',
763 token.lineno)
764
765 while self.stream.current.type != 'rparen':
766 if require_comma:
767 self.stream.expect('comma')
768 # support for trailing comma
769 if self.stream.current.type == 'rparen':
770 break
771 if self.stream.current.type == 'mul':
772 ensure(dyn_args is None and dyn_kwargs is None)
773 next(self.stream)
774 dyn_args = self.parse_expression()
775 elif self.stream.current.type == 'pow':
776 ensure(dyn_kwargs is None)
777 next(self.stream)
778 dyn_kwargs = self.parse_expression()
779 else:
780 ensure(dyn_args is None and dyn_kwargs is None)
781 if self.stream.current.type == 'name' and \
782 self.stream.look().type == 'assign':
783 key = self.stream.current.value
784 self.stream.skip(2)
785 value = self.parse_expression()
786 kwargs.append(nodes.Keyword(key, value,
787 lineno=value.lineno))
788 else:
789 ensure(not kwargs)
790 args.append(self.parse_expression())
791
792 require_comma = True
793 self.stream.expect('rparen')
794
795 if node is None:
796 return args, kwargs, dyn_args, dyn_kwargs
797 return nodes.Call(node, args, kwargs, dyn_args, dyn_kwargs,
798 lineno=token.lineno)
799
800 def parse_filter(self, node, start_inline=False):
801 while self.stream.current.type == 'pipe' or start_inline:

Callers 4

parse_postfixMethod · 0.95
parse_filter_exprMethod · 0.95
parse_filterMethod · 0.95
parse_testMethod · 0.95

Calls 7

parse_expressionMethod · 0.95
nextFunction · 0.50
expectMethod · 0.45
lookMethod · 0.45
skipMethod · 0.45
appendMethod · 0.45
CallMethod · 0.45

Tested by

no test coverage detected