Skip to content

Commit 42abf5e

Browse files
committed
Support class with generics type from d.ts func signatures
1 parent f801f00 commit 42abf5e

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

src/org/klesun/deep_js_completion/resolvers/VarRes.scala

+6-2
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,12 @@ case class VarRes(ctx: IExprCtx) {
106106
if (generics.contains(fqn)) {
107107
generics(fqn).apply()
108108
} else {
109-
// TODO: support actual classes
110-
None
109+
val clsType = JSTypeUtils.createType(sints.getQualifiedTypeName, JSTypeSource.EMPTY)
110+
val clsGenerics: java.util.List[JSType] = sints.getTypeArguments.map(
111+
gena => Mt.mergeTypes(parseTypePsi(gena, generics))
112+
.getOrElse(JSUnknownType.JS_INSTANCE)
113+
).toList.asJava
114+
Some(new JSGenericTypeImpl(JSTypeSource.EMPTY, clsType, clsGenerics))
111115
}
112116
case _ => None
113117
}

tests/SomeCjsModule.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ let SomeCjsModule = (reqBody) => {
33
doStuff: (arg1) => {
44
return {lalala: 123};
55
},
6-
runInputCmd: (cmd) => Promise.resolve({output: 'EXECUTED'})
6+
runInputCmd: (cmd) => Promise.resolve({output: 'EXECUTED'}),
7+
getSimpleObj: () => ({a: 5, b: 6}),
78
};
89
};
910

tests/index.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -288,4 +288,7 @@ remapping.map;
288288
let huj = {
289289
wrap: () => ({wrap1: 5, wrap2: 6}),
290290
get: () => ({get1: 5, get2: 6}),
291-
}.get().; // should not suggest "wrap1" and "wrap2"
291+
}.get().; // should not suggest "wrap1" and "wrap2"
292+
293+
// should suggest: "a", "b"
294+
Promise.resolve(SomeCjsModule().getSimpleObj()).then(a => a.);

0 commit comments

Comments
 (0)