@@ -18,6 +18,26 @@ def main(param1, param2):
1818main(
1919"""
2020
21+ MULTI_LINE_DOC = """import sys
22+
23+ def main(param1=None,
24+ param2=None,
25+ param3=None,
26+ param4=None,
27+ param5=None,
28+ param6=None,
29+ param7=None,
30+ param8=None):
31+ \" \" \" Main docstring
32+
33+ Args:
34+ param1 (str): Docs for param1
35+ \" \" \"
36+ raise Exception()
37+
38+ main(
39+ """
40+
2141
2242def test_no_signature ():
2343 # Over blank line
@@ -44,6 +64,25 @@ def test_signature():
4464 assert sig_info ['activeParameter' ] == 0
4565
4666
67+ def test_multi_line_signature ():
68+ # Over '( ' in main(
69+ sig_position = {'line' : 17 , 'character' : 5 }
70+ doc = Document (DOC_URI , MULTI_LINE_DOC )
71+
72+ sig_info = signature .pyls_signature_help (doc , sig_position )
73+
74+ sigs = sig_info ['signatures' ]
75+ assert len (sigs ) == 1
76+ assert sigs [0 ]['label' ] == (
77+ 'main(param1=None, param2=None, param3=None, param4=None, '
78+ 'param5=None, param6=None, param7=None, param8=None)'
79+ )
80+ assert sigs [0 ]['parameters' ][0 ]['label' ] == 'param1'
81+ assert sigs [0 ]['parameters' ][0 ]['documentation' ] == 'Docs for param1'
82+
83+ assert sig_info ['activeParameter' ] == 0
84+
85+
4786@pytest .mark .parametrize ('regex,doc' , [
4887 (signature .SPHINX , " :param test: parameter docstring" ),
4988 (signature .EPYDOC , " @param test: parameter docstring" ),
0 commit comments