@@ -42,6 +42,15 @@ suite('ParamHintCompletionProvider', () => {
4242 assert . notEqual ( actual , null ) ;
4343 assert . equal ( actual ?. items [ 0 ] . label . trim ( ) , PythonType . Int ) ;
4444 } ) ;
45+
46+ test ( "provides items for nestled function" , async ( ) => {
47+ let data = `):
48+ x = 1
49+ def nestled(multiple_lines,
50+ paramName:` ;
51+ let actual = await providerResult ( provider , data ) ;
52+ assert . notEqual ( actual , null ) ;
53+ } ) ;
4554
4655 test ( "does not provide items unless a function def is detected" , async ( ) => {
4756 let text = " :" ;
@@ -56,10 +65,18 @@ suite('ParamHintCompletionProvider', () => {
5665 } ) ;
5766
5867 test ( "does not provide items for ':' under a function def" , async ( ) => {
59- let data = "):\n d = 'val :" ;
68+ let data = "):\n d = ', not_a_param :" ;
6069 let expected = null ;
6170 let actual = await providerResult ( provider , data ) ;
6271 assert . equal ( actual , expected , messageFor ( { data, expected } , actual ) ) ;
72+
73+ data = `self, lt: List[Tuple[str]],
74+ s: str,
75+ f: float,
76+ i: int):
77+ v = ', not_a_param:` ;
78+ actual = await providerResult ( provider , data ) ;
79+ assert . equal ( actual , null , messageFor ( { data, expected } , actual ) ) ;
6380
6481 data = "):\n :" ;
6582 actual = await providerResult ( provider , data ) ;
@@ -68,6 +85,15 @@ suite('ParamHintCompletionProvider', () => {
6885 data = "):\n d = { key:" ;
6986 actual = await providerResult ( provider , data ) ;
7087 assert . equal ( actual , null , messageFor ( { data, expected } , actual ) ) ;
88+
89+ data = `
90+ def __init__(self, lt: List[Tuple[str]],
91+ s: str,
92+ f: float,
93+ i: int):
94+ v = ', not_a_param:` ;
95+ actual = await providerResult ( provider , data ) ;
96+ assert . equal ( actual , null , messageFor ( { data, expected } , actual ) ) ;
7197 } ) ;
7298
7399 test ( "does not provide items for end of function definition" , async ( ) => {
@@ -99,7 +125,11 @@ async function providerResult(
99125 content += trailingText ;
100126 }
101127
102- return provideCompletionItems ( provider , content , lastPos ) ;
128+ const doc = await vsc . workspace . openTextDocument ( { language, content } ) ;
129+ const token = new vsc . CancellationTokenSource ( ) . token ;
130+ const ctx = { triggerCharacter : paramHintTrigger , triggerKind : vsc . CompletionTriggerKind . TriggerCharacter } ;
131+
132+ return provider . provideCompletionItems ( doc , lastPos , token , ctx ) ;
103133}
104134
105135async function provideCompletionItems (
0 commit comments