@@ -42,6 +42,15 @@ suite('ParamHintCompletionProvider', () => {
42
42
assert . notEqual ( actual , null ) ;
43
43
assert . equal ( actual ?. items [ 0 ] . label . trim ( ) , PythonType . Int ) ;
44
44
} ) ;
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
+ } ) ;
45
54
46
55
test ( "does not provide items unless a function def is detected" , async ( ) => {
47
56
let text = " :" ;
@@ -56,10 +65,18 @@ suite('ParamHintCompletionProvider', () => {
56
65
} ) ;
57
66
58
67
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 :" ;
60
69
let expected = null ;
61
70
let actual = await providerResult ( provider , data ) ;
62
71
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 ) ) ;
63
80
64
81
data = "):\n :" ;
65
82
actual = await providerResult ( provider , data ) ;
@@ -68,6 +85,15 @@ suite('ParamHintCompletionProvider', () => {
68
85
data = "):\n d = { key:" ;
69
86
actual = await providerResult ( provider , data ) ;
70
87
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 ) ) ;
71
97
} ) ;
72
98
73
99
test ( "does not provide items for end of function definition" , async ( ) => {
@@ -99,7 +125,11 @@ async function providerResult(
99
125
content += trailingText ;
100
126
}
101
127
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 ) ;
103
133
}
104
134
105
135
async function provideCompletionItems (
0 commit comments