@@ -38,16 +38,29 @@ class EmitterOverloadProvider : LuaCompletionProvider() {
3838 parentType.each { ty ->
3939 if (ty is ITyFunction ) {
4040 val firstParam = ty.mainSignature.params.firstOrNull()
41- if (firstParam != null && firstParam.ty.subTypeOf(Ty .STRING , searchContext, true )) {
42- ty.process(Processor { sig ->
43- sig.params.firstOrNull()?.let {
44- val paramType = it.ty
45- if (paramType is TyStringLiteral ) {
46- addOverload(psi, paramType, sig, completionResultSet)
41+ if (firstParam != null ) {
42+ if (firstParam.ty.subTypeOf(Ty .STRING , searchContext, true )) {
43+ ty.process(Processor { sig ->
44+ sig.params.firstOrNull()?.let {
45+ val paramType = it.ty
46+ if (paramType is TyStringLiteral ) {
47+ addStringOverload(psi, paramType, sig, completionResultSet)
48+ }
4749 }
48- }
49- true
50- })
50+ true
51+ })
52+ }
53+ else if (firstParam.ty.subTypeOf(Ty .NUMBER , searchContext, true )){
54+ ty.process(Processor { sig ->
55+ sig.params.firstOrNull()?.let {
56+ val paramType = it.ty
57+ if (paramType is TyStringLiteral ) {
58+ addNumberOverload(psi, paramType, sig, completionResultSet)
59+ }
60+ }
61+ true
62+ })
63+ }
5164 }
5265 }
5366 }
@@ -56,7 +69,7 @@ class EmitterOverloadProvider : LuaCompletionProvider() {
5669 }
5770 }
5871
59- private fun addOverload (
72+ private fun addStringOverload (
6073 psiElement : PsiElement ,
6174 tyStringLiteral : TyStringLiteral ,
6275 signature : IFunSignature ,
@@ -74,37 +87,19 @@ class EmitterOverloadProvider : LuaCompletionProvider() {
7487 completionResultSet.addElement(element)
7588 }
7689 }
77- // private fun addEnum(
78- // luaType: ITyClass,
79- // searchContext: SearchContext,
80- // completionResultSet: CompletionResultSet
81- // ) {
82- // luaType.lazyInit(searchContext)
83- // luaType.processMembers(searchContext) { curType, member ->
84- // ProgressManager.checkCanceled()
85- // member.name?.let {
86- // val name = "${luaType.className}.${member.name}"
87- // if (completionResultSet.prefixMatcher.prefixMatches(name)) {
88- // addEnumField(completionResultSet, member, name, curType)
89- // }
90- // }
91- //
92- // }
93- // }
94- //
95- // private fun addEnumField(
96- // completionResultSet: CompletionResultSet,
97- // member: LuaClassMember,
98- // name: String,
99- // fieldType: ITyClass
100- // ) {
101- //
102- // if (member is LuaClassField) {
103- // val element =
104- // LookupElementFactory.createFieldLookupElement(fieldType.className, name, member, fieldType, true)
105- // element.kind = CompletionItemKind.Enum
106- // completionResultSet.addElement(element)
107- // }
108- // }
90+
91+ private fun addNumberOverload (
92+ psiElement : PsiElement ,
93+ tyStringLiteral : TyStringLiteral ,
94+ signature : IFunSignature ,
95+ completionResultSet : CompletionResultSet
96+ ) {
97+ if (psiElement.node.elementType != LuaTypes .STRING ) {
98+ val element = LuaLookupElement (tyStringLiteral.content)
99+ element.isEnumMember = true
100+ element.kind = CompletionItemKind .EnumMember
101+ completionResultSet.addElement(element)
102+ }
103+ }
109104
110105}
0 commit comments