• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "convertors-napi.h"
17 #include "lsp/include/api.h"
18 #include "lsp/include/completions.h"
19 #include "common.h"
20 #include "panda_types.h"
21 #include "public/es2panda_lib.h"
22 #include "lsp/include/refactors/refactor_types.h"
23 #include <cstddef>
24 #include <cstdint>
25 #include <string>
26 #include <variant>
27 
28 namespace {
29 using ark::es2panda::lsp::ClassHierarchy;
30 using ark::es2panda::lsp::ClassHierarchyInfo;
31 using ark::es2panda::lsp::ClassHierarchyItem;
32 using ark::es2panda::lsp::ClassMethodItem;
33 using ark::es2panda::lsp::ClassPropertyItem;
34 }  // namespace
35 
GetStringCopy(KStringPtr & ptr)36 char *GetStringCopy(KStringPtr &ptr)
37 {
38     return strdup(ptr.c_str());
39 }
40 
impl_getCurrentTokenValue(KNativePointer context,KInt position)41 KNativePointer impl_getCurrentTokenValue(KNativePointer context, KInt position)
42 {
43     LSPAPI const *ctx = GetImpl();
44     return new std::string(
45         ctx->getCurrentTokenValue(reinterpret_cast<es2panda_Context *>(context), static_cast<std::size_t>(position)));
46 }
TS_INTEROP_2(getCurrentTokenValue,KNativePointer,KNativePointer,KInt)47 TS_INTEROP_2(getCurrentTokenValue, KNativePointer, KNativePointer, KInt)
48 
49 // diagnostics related
50 KNativePointer impl_getSemanticDiagnostics(KNativePointer context)
51 {
52     LSPAPI const *ctx = GetImpl();
53     auto *ptrDiag =
54         new DiagnosticReferences(ctx->getSemanticDiagnostics(reinterpret_cast<es2panda_Context *>(context)));
55     return ptrDiag;
56 }
TS_INTEROP_1(getSemanticDiagnostics,KNativePointer,KNativePointer)57 TS_INTEROP_1(getSemanticDiagnostics, KNativePointer, KNativePointer)
58 
59 KNativePointer impl_getClassPropertyInfo(KNativePointer context, KInt position, KBoolean shouldCollectInherited)
60 {
61     LSPAPI const *ctx = GetImpl();
62     auto info = ctx->getClassPropertyInfo(reinterpret_cast<es2panda_Context *>(context),
63                                           static_cast<std::size_t>(position), shouldCollectInherited != 0);
64     return new std::vector<FieldsInfo>(info);
65 }
TS_INTEROP_3(getClassPropertyInfo,KNativePointer,KNativePointer,KInt,KBoolean)66 TS_INTEROP_3(getClassPropertyInfo, KNativePointer, KNativePointer, KInt, KBoolean)
67 
68 KNativePointer impl_getFieldsInfoFromPropertyInfo(KNativePointer infoPtr)
69 {
70     auto info = reinterpret_cast<std::vector<FieldsInfo> *>(infoPtr);
71     std::vector<void *> ptrs;
72     for (auto &el : *info) {
73         ptrs.push_back(new FieldsInfo(el));
74     }
75     return new std::vector<void *>(ptrs);
76 }
TS_INTEROP_1(getFieldsInfoFromPropertyInfo,KNativePointer,KNativePointer)77 TS_INTEROP_1(getFieldsInfoFromPropertyInfo, KNativePointer, KNativePointer)
78 
79 KNativePointer impl_getNameFromPropertyInfo(KNativePointer infoPtr)
80 {
81     auto info = reinterpret_cast<FieldsInfo *>(infoPtr);
82     return new std::string(info->name);
83 }
TS_INTEROP_1(getNameFromPropertyInfo,KNativePointer,KNativePointer)84 TS_INTEROP_1(getNameFromPropertyInfo, KNativePointer, KNativePointer)
85 
86 KNativePointer impl_getFieldListPropertyFromPropertyInfo(KNativePointer infoPtr)
87 {
88     auto info = reinterpret_cast<FieldsInfo *>(infoPtr);
89     std::vector<void *> ptrs;
90     for (auto &el : info->properties) {
91         ptrs.push_back(new FieldListProperty(el));
92     }
93     return new std::vector<void *>(ptrs);
94 }
TS_INTEROP_1(getFieldListPropertyFromPropertyInfo,KNativePointer,KNativePointer)95 TS_INTEROP_1(getFieldListPropertyFromPropertyInfo, KNativePointer, KNativePointer)
96 
97 KNativePointer impl_getKindFromPropertyInfo(KNativePointer infoPtr)
98 {
99     auto info = reinterpret_cast<FieldListProperty *>(infoPtr);
100     return new std::string(info->kind);
101 }
TS_INTEROP_1(getKindFromPropertyInfo,KNativePointer,KNativePointer)102 TS_INTEROP_1(getKindFromPropertyInfo, KNativePointer, KNativePointer)
103 
104 KNativePointer impl_getModifierKindsFromPropertyInfo(KNativePointer infoPtr)
105 {
106     auto info = reinterpret_cast<FieldListProperty *>(infoPtr);
107     std::vector<void *> ptrs;
108     for (auto &el : info->modifierKinds.value()) {
109         ptrs.push_back(new std::string(el));
110     }
111     return new std::vector<void *>(ptrs);
112 }
TS_INTEROP_1(getModifierKindsFromPropertyInfo,KNativePointer,KNativePointer)113 TS_INTEROP_1(getModifierKindsFromPropertyInfo, KNativePointer, KNativePointer)
114 
115 KNativePointer impl_getDisplayNameFromPropertyInfo(KNativePointer infoPtr)
116 {
117     auto info = reinterpret_cast<FieldListProperty *>(infoPtr);
118     return new std::string(info->displayName);
119 }
TS_INTEROP_1(getDisplayNameFromPropertyInfo,KNativePointer,KNativePointer)120 TS_INTEROP_1(getDisplayNameFromPropertyInfo, KNativePointer, KNativePointer)
121 
122 KNativePointer impl_getStartFromPropertyInfo(KNativePointer infoPtr)
123 {
124     auto info = reinterpret_cast<FieldListProperty *>(infoPtr);
125     return new std::size_t(info->start);
126 }
TS_INTEROP_1(getStartFromPropertyInfo,KNativePointer,KNativePointer)127 TS_INTEROP_1(getStartFromPropertyInfo, KNativePointer, KNativePointer)
128 
129 KNativePointer impl_getEndFromPropertyInfo(KNativePointer infoPtr)
130 {
131     auto info = reinterpret_cast<FieldListProperty *>(infoPtr);
132     return new std::size_t(info->end);
133 }
TS_INTEROP_1(getEndFromPropertyInfo,KNativePointer,KNativePointer)134 TS_INTEROP_1(getEndFromPropertyInfo, KNativePointer, KNativePointer)
135 
136 KNativePointer impl_getSyntacticDiagnostics(KNativePointer context)
137 {
138     LSPAPI const *ctx = GetImpl();
139     auto *ptrDiag =
140         new DiagnosticReferences(ctx->getSyntacticDiagnostics(reinterpret_cast<es2panda_Context *>(context)));
141     return ptrDiag;
142 }
TS_INTEROP_1(getSyntacticDiagnostics,KNativePointer,KNativePointer)143 TS_INTEROP_1(getSyntacticDiagnostics, KNativePointer, KNativePointer)
144 
145 KNativePointer impl_getDiags(KNativePointer diagRefsPtr)
146 {
147     auto *diagRefs = reinterpret_cast<DiagnosticReferences *>(diagRefsPtr);
148     std::vector<void *> ptrs;
149     for (auto &el : diagRefs->diagnostic) {
150         ptrs.push_back(new Diagnostic(el));
151     }
152     return new std::vector<void *>(ptrs);
153 }
TS_INTEROP_1(getDiags,KNativePointer,KNativePointer)154 TS_INTEROP_1(getDiags, KNativePointer, KNativePointer)
155 
156 KNativePointer impl_getDiagMsg(KNativePointer diagRefPtr)
157 {
158     auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
159     return new std::string(diagRef->message_);
160 }
TS_INTEROP_1(getDiagMsg,KNativePointer,KNativePointer)161 TS_INTEROP_1(getDiagMsg, KNativePointer, KNativePointer)
162 
163 KNativePointer impl_getDiagRange(KNativePointer diagRefPtr)
164 {
165     auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
166     return &diagRef->range_;
167 }
TS_INTEROP_1(getDiagRange,KNativePointer,KNativePointer)168 TS_INTEROP_1(getDiagRange, KNativePointer, KNativePointer)
169 
170 KNativePointer impl_getRangeEnd(KNativePointer rangePtr)
171 {
172     auto *range = reinterpret_cast<Range *>(rangePtr);
173     return &range->end;
174 }
TS_INTEROP_1(getRangeEnd,KNativePointer,KNativePointer)175 TS_INTEROP_1(getRangeEnd, KNativePointer, KNativePointer)
176 
177 KNativePointer impl_getRangeStart(KNativePointer rangePtr)
178 {
179     auto *range = reinterpret_cast<Range *>(rangePtr);
180     return &range->start;
181 }
TS_INTEROP_1(getRangeStart,KNativePointer,KNativePointer)182 TS_INTEROP_1(getRangeStart, KNativePointer, KNativePointer)
183 
184 KInt impl_getPosLine(KNativePointer posPtr)
185 {
186     auto *pos = reinterpret_cast<Position *>(posPtr);
187     return pos->line_;
188 }
TS_INTEROP_1(getPosLine,KInt,KNativePointer)189 TS_INTEROP_1(getPosLine, KInt, KNativePointer)
190 
191 KInt impl_getPosChar(KNativePointer posPtr)
192 {
193     auto *pos = reinterpret_cast<Position *>(posPtr);
194     return pos->character_;
195 }
TS_INTEROP_1(getPosChar,KInt,KNativePointer)196 TS_INTEROP_1(getPosChar, KInt, KNativePointer)
197 
198 KInt impl_getDiagSeverity(KNativePointer diagRefPtr)
199 {
200     auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
201     return static_cast<size_t>(diagRef->severity_);
202 }
TS_INTEROP_1(getDiagSeverity,KInt,KNativePointer)203 TS_INTEROP_1(getDiagSeverity, KInt, KNativePointer)
204 
205 KNativePointer impl_getDiagCode(KNativePointer diagRefPtr)
206 {
207     auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
208     return &diagRef->code_;
209 }
TS_INTEROP_1(getDiagCode,KNativePointer,KNativePointer)210 TS_INTEROP_1(getDiagCode, KNativePointer, KNativePointer)
211 
212 KNativePointer impl_getDiagCodeDescription(KNativePointer diagRefPtr)
213 {
214     auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
215     return &diagRef->codeDescription_;
216 }
TS_INTEROP_1(getDiagCodeDescription,KNativePointer,KNativePointer)217 TS_INTEROP_1(getDiagCodeDescription, KNativePointer, KNativePointer)
218 
219 KNativePointer impl_getCodeDescriptionHref(KNativePointer codeDescrRefPtr)
220 {
221     auto *codeDescrRef = reinterpret_cast<CodeDescription *>(codeDescrRefPtr);
222     return new std::string(codeDescrRef->href_);
223 }
TS_INTEROP_1(getCodeDescriptionHref,KNativePointer,KNativePointer)224 TS_INTEROP_1(getCodeDescriptionHref, KNativePointer, KNativePointer)
225 
226 KNativePointer impl_getDiagTags(KNativePointer diagRefPtr)
227 {
228     auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
229     std::vector<void *> ptrs;
230     for (auto el : diagRef->tags_) {
231         auto castedEl = static_cast<size_t>(el);
232         ptrs.push_back(&castedEl);
233     }
234     return new std::vector<void *>(ptrs);
235 }
TS_INTEROP_1(getDiagTags,KNativePointer,KNativePointer)236 TS_INTEROP_1(getDiagTags, KNativePointer, KNativePointer)
237 
238 KNativePointer impl_getDiagData(KNativePointer diagRefPtr)
239 {
240     auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
241     return &diagRef->data_;
242 }
TS_INTEROP_1(getDiagData,KNativePointer,KNativePointer)243 TS_INTEROP_1(getDiagData, KNativePointer, KNativePointer)
244 
245 KNativePointer impl_getDiagRelatedInfo(KNativePointer diagRefPtr)
246 {
247     auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
248     std::vector<void *> ptrs;
249     for (auto el : diagRef->relatedInformation_) {
250         ptrs.push_back(&el);
251     }
252     return new std::vector<void *>(ptrs);
253 }
TS_INTEROP_1(getDiagRelatedInfo,KNativePointer,KNativePointer)254 TS_INTEROP_1(getDiagRelatedInfo, KNativePointer, KNativePointer)
255 
256 KNativePointer impl_getRelatedInfoMsg(KNativePointer relatedInfoPtr)
257 {
258     auto *relatedInfoRef = reinterpret_cast<DiagnosticRelatedInformation *>(relatedInfoPtr);
259     return &relatedInfoRef->message_;
260 }
TS_INTEROP_1(getRelatedInfoMsg,KNativePointer,KNativePointer)261 TS_INTEROP_1(getRelatedInfoMsg, KNativePointer, KNativePointer)
262 
263 KNativePointer impl_getRelatedInfoLoc(KNativePointer relatedInfoPtr)
264 {
265     auto *relatedInfoRef = reinterpret_cast<DiagnosticRelatedInformation *>(relatedInfoPtr);
266     return &relatedInfoRef->location_;
267 }
TS_INTEROP_1(getRelatedInfoLoc,KNativePointer,KNativePointer)268 TS_INTEROP_1(getRelatedInfoLoc, KNativePointer, KNativePointer)
269 
270 KNativePointer impl_getLocUri(KNativePointer locPtr)
271 {
272     auto *locRef = reinterpret_cast<Location *>(locPtr);
273     return &locRef->uri_;
274 }
TS_INTEROP_1(getLocUri,KNativePointer,KNativePointer)275 TS_INTEROP_1(getLocUri, KNativePointer, KNativePointer)
276 
277 KNativePointer impl_getLocRange(KNativePointer locPtr)
278 {
279     auto *locRef = reinterpret_cast<Location *>(locPtr);
280     return &locRef->range_;
281 }
TS_INTEROP_1(getLocRange,KNativePointer,KNativePointer)282 TS_INTEROP_1(getLocRange, KNativePointer, KNativePointer)
283 
284 KNativePointer impl_getDiagSource(KNativePointer diagRefPtr)
285 {
286     auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
287     return new std::string(diagRef->source_);
288 }
TS_INTEROP_1(getDiagSource,KNativePointer,KNativePointer)289 TS_INTEROP_1(getDiagSource, KNativePointer, KNativePointer)
290 
291 KBoolean impl_isPackageModule(KNativePointer context)
292 {
293     LSPAPI const *ctx = GetImpl();
294     return static_cast<KBoolean>(ctx->isPackageModule(reinterpret_cast<es2panda_Context *>(context)));
295 }
TS_INTEROP_1(isPackageModule,KBoolean,KNativePointer)296 TS_INTEROP_1(isPackageModule, KBoolean, KNativePointer)
297 
298 KNativePointer impl_getFileReferences(KStringPtr &filenamePtr, KNativePointer context, KBoolean isPackageModule)
299 {
300     LSPAPI const *ctx = GetImpl();
301     auto *ref = new References(ctx->getFileReferences(
302         GetStringCopy(filenamePtr), reinterpret_cast<es2panda_Context *>(context), isPackageModule != 0));
303     return ref;
304 }
TS_INTEROP_3(getFileReferences,KNativePointer,KStringPtr,KNativePointer,KBoolean)305 TS_INTEROP_3(getFileReferences, KNativePointer, KStringPtr, KNativePointer, KBoolean)
306 
307 KNativePointer impl_getDeclInfo(KNativePointer context, KInt position)
308 {
309     LSPAPI const *ctx = GetImpl();
310     auto *declInfo = new DeclInfo(
311         ctx->getDeclInfo(reinterpret_cast<es2panda_Context *>(context), static_cast<std::size_t>(position)));
312     return declInfo;
313 }
TS_INTEROP_2(getDeclInfo,KNativePointer,KNativePointer,KInt)314 TS_INTEROP_2(getDeclInfo, KNativePointer, KNativePointer, KInt)
315 
316 KNativePointer impl_getClassConstructorInfo(KNativePointer context, KInt position, KStringArray strArrayPtr)
317 {
318     std::vector<std::string> properties;
319     for (const auto &el : MakeStringVector(strArrayPtr)) {
320         properties.emplace_back(GetStringCopy(const_cast<KStringPtr &>(el)));
321     }
322     LSPAPI const *ctx = GetImpl();
323     auto *info = new ark::es2panda::lsp::RefactorEditInfo(ctx->getClassConstructorInfo(
324         reinterpret_cast<es2panda_Context *>(context), static_cast<std::size_t>(position), properties));
325     return info;
326 }
TS_INTEROP_3(getClassConstructorInfo,KNativePointer,KNativePointer,KInt,KStringArray)327 TS_INTEROP_3(getClassConstructorInfo, KNativePointer, KNativePointer, KInt, KStringArray)
328 
329 KNativePointer impl_getFileTextChangesFromConstructorInfo(KNativePointer infoPtr)
330 {
331     auto *info = reinterpret_cast<ark::es2panda::lsp::RefactorEditInfo *>(infoPtr);
332     std::vector<void *> ptrs;
333     for (auto &el : info->GetFileTextChanges()) {
334         ptrs.push_back(new FileTextChanges(el));
335     }
336     return new std::vector<void *>(ptrs);
337 }
TS_INTEROP_1(getFileTextChangesFromConstructorInfo,KNativePointer,KNativePointer)338 TS_INTEROP_1(getFileTextChangesFromConstructorInfo, KNativePointer, KNativePointer)
339 
340 KNativePointer impl_getFileNameFromConstructorInfo(KNativePointer infoPtr)
341 {
342     auto *info = reinterpret_cast<FileTextChanges *>(infoPtr);
343     return new std::string(info->fileName);
344 }
TS_INTEROP_1(getFileNameFromConstructorInfo,KNativePointer,KNativePointer)345 TS_INTEROP_1(getFileNameFromConstructorInfo, KNativePointer, KNativePointer)
346 
347 KNativePointer impl_getTextChangeFromConstructorInfo(KNativePointer infoPtr)
348 {
349     auto *info = reinterpret_cast<FileTextChanges *>(infoPtr);
350     std::vector<void *> ptrs;
351     for (auto &el : info->textChanges) {
352         ptrs.push_back(new TextChange(el));
353     }
354     return new std::vector<void *>(ptrs);
355 }
TS_INTEROP_1(getTextChangeFromConstructorInfo,KNativePointer,KNativePointer)356 TS_INTEROP_1(getTextChangeFromConstructorInfo, KNativePointer, KNativePointer)
357 
358 KNativePointer impl_getNewTextFromConstructorInfo(KNativePointer infoPtr)
359 {
360     auto *info = reinterpret_cast<TextChange *>(infoPtr);
361     return new std::string(info->newText);
362 }
TS_INTEROP_1(getNewTextFromConstructorInfo,KNativePointer,KNativePointer)363 TS_INTEROP_1(getNewTextFromConstructorInfo, KNativePointer, KNativePointer)
364 
365 KNativePointer impl_getTextSpanFromConstructorInfo(KNativePointer infoPtr)
366 {
367     auto *info = reinterpret_cast<TextChange *>(infoPtr);
368     return new TextSpan(info->span);
369 }
TS_INTEROP_1(getTextSpanFromConstructorInfo,KNativePointer,KNativePointer)370 TS_INTEROP_1(getTextSpanFromConstructorInfo, KNativePointer, KNativePointer)
371 
372 KNativePointer impl_getCompletionEntryDetailsSymbolDisplayPart(KNativePointer completionEntryDetailsPtr)
373 {
374     auto *completionEntryDetails = reinterpret_cast<CompletionEntryDetails *>(completionEntryDetailsPtr);
375     std::vector<void *> ptrs;
376     for (auto &el : completionEntryDetails->GetDisplayParts()) {
377         ptrs.push_back(new SymbolDisplayPart(el));
378     }
379     return new std::vector<void *>(ptrs);
380 }
TS_INTEROP_1(getCompletionEntryDetailsSymbolDisplayPart,KNativePointer,KNativePointer)381 TS_INTEROP_1(getCompletionEntryDetailsSymbolDisplayPart, KNativePointer, KNativePointer)
382 
383 KNativePointer impl_getCompletionEntryDetailsKind(KNativePointer completionEntryDetailsPtr)
384 {
385     auto *completionEntryDetails = reinterpret_cast<CompletionEntryDetails *>(completionEntryDetailsPtr);
386     return new std::string(completionEntryDetails->GetKind());
387 }
TS_INTEROP_1(getCompletionEntryDetailsKind,KNativePointer,KNativePointer)388 TS_INTEROP_1(getCompletionEntryDetailsKind, KNativePointer, KNativePointer)
389 
390 KNativePointer impl_getCompletionEntryDetailsKindModifier(KNativePointer ref)
391 {
392     auto *refPtr = reinterpret_cast<CompletionEntryDetails *>(ref);
393     return new std::string(refPtr->GetKindModifiers());
394 }
TS_INTEROP_1(getCompletionEntryDetailsKindModifier,KNativePointer,KNativePointer)395 TS_INTEROP_1(getCompletionEntryDetailsKindModifier, KNativePointer, KNativePointer)
396 
397 KNativePointer impl_getCompletionEntryDetailsFileName(KNativePointer ref)
398 {
399     auto *refPtr = reinterpret_cast<CompletionEntryDetails *>(ref);
400     return new std::string(refPtr->GetFileName());
401 }
TS_INTEROP_1(getCompletionEntryDetailsFileName,KNativePointer,KNativePointer)402 TS_INTEROP_1(getCompletionEntryDetailsFileName, KNativePointer, KNativePointer)
403 
404 KNativePointer impl_getCompletionEntryDetailsEntryName(KNativePointer ref)
405 {
406     auto *refPtr = reinterpret_cast<CompletionEntryDetails *>(ref);
407     return new std::string(refPtr->GetName());
408 }
TS_INTEROP_1(getCompletionEntryDetailsEntryName,KNativePointer,KNativePointer)409 TS_INTEROP_1(getCompletionEntryDetailsEntryName, KNativePointer, KNativePointer)
410 
411 KNativePointer impl_findSafeDeleteLocation(KNativePointer context, KNativePointer declInfo)
412 {
413     LSPAPI const *ctx = GetImpl();
414     auto *result = new std::vector<SafeDeleteLocation>(
415         ctx->FindSafeDeleteLocation(reinterpret_cast<es2panda_Context *>(context),
416                                     reinterpret_cast<std::tuple<std::string, std::string> *>(declInfo)));
417     return result;
418 }
TS_INTEROP_2(findSafeDeleteLocation,KNativePointer,KNativePointer,KNativePointer)419 TS_INTEROP_2(findSafeDeleteLocation, KNativePointer, KNativePointer, KNativePointer)
420 
421 KNativePointer impl_getSafeDeleteLocations(KNativePointer safeDeleteLocationsPtr)
422 {
423     auto *locations = reinterpret_cast<std::vector<SafeDeleteLocation> *>(safeDeleteLocationsPtr);
424     std::vector<void *> ptrs;
425     for (auto &loc : *locations) {
426         ptrs.push_back(new SafeDeleteLocation(loc));
427     }
428     return new std::vector<void *>(ptrs);
429 }
TS_INTEROP_1(getSafeDeleteLocations,KNativePointer,KNativePointer)430 TS_INTEROP_1(getSafeDeleteLocations, KNativePointer, KNativePointer)
431 
432 KNativePointer impl_getSafeDeleteLocationUri(KNativePointer locationPtr)
433 {
434     auto *location = reinterpret_cast<SafeDeleteLocation *>(locationPtr);
435     return new std::string(location->uri);
436 }
TS_INTEROP_1(getSafeDeleteLocationUri,KNativePointer,KNativePointer)437 TS_INTEROP_1(getSafeDeleteLocationUri, KNativePointer, KNativePointer)
438 
439 KInt impl_getSafeDeleteLocationStart(KNativePointer locationPtr)
440 {
441     auto *location = reinterpret_cast<SafeDeleteLocation *>(locationPtr);
442     return static_cast<KInt>(location->start);
443 }
TS_INTEROP_1(getSafeDeleteLocationStart,KInt,KNativePointer)444 TS_INTEROP_1(getSafeDeleteLocationStart, KInt, KNativePointer)
445 
446 KInt impl_getSafeDeleteLocationLength(KNativePointer locationPtr)
447 {
448     auto *location = reinterpret_cast<SafeDeleteLocation *>(locationPtr);
449     return static_cast<KInt>(location->length);
450 }
TS_INTEROP_1(getSafeDeleteLocationLength,KInt,KNativePointer)451 TS_INTEROP_1(getSafeDeleteLocationLength, KInt, KNativePointer)
452 
453 KNativePointer impl_getReferencesAtPosition(KNativePointer context, KNativePointer declInfo)
454 {
455     LSPAPI const *ctx = GetImpl();
456     auto *ref = new References(ctx->getReferencesAtPosition(reinterpret_cast<es2panda_Context *>(context),
457                                                             reinterpret_cast<DeclInfo *>(declInfo)));
458     return ref;
459 }
TS_INTEROP_2(getReferencesAtPosition,KNativePointer,KNativePointer,KNativePointer)460 TS_INTEROP_2(getReferencesAtPosition, KNativePointer, KNativePointer, KNativePointer)
461 
462 KNativePointer impl_getReferenceInfos(KNativePointer refs)
463 {
464     auto *refsPtr = reinterpret_cast<References *>(refs);
465     std::vector<void *> ptrs;
466     for (auto &el : refsPtr->referenceInfos) {
467         ptrs.push_back(new ReferenceInfo(el));
468     }
469     return new std::vector<void *>(ptrs);
470 }
TS_INTEROP_1(getReferenceInfos,KNativePointer,KNativePointer)471 TS_INTEROP_1(getReferenceInfos, KNativePointer, KNativePointer)
472 
473 KInt impl_getReferenceStart(KNativePointer ref)
474 {
475     auto *refPtr = reinterpret_cast<ReferenceInfo *>(ref);
476     return refPtr->start;
477 }
TS_INTEROP_1(getReferenceStart,KInt,KNativePointer)478 TS_INTEROP_1(getReferenceStart, KInt, KNativePointer)
479 
480 KInt impl_getReferenceLength(KNativePointer ref)
481 {
482     auto *refPtr = reinterpret_cast<ReferenceInfo *>(ref);
483     return refPtr->length;
484 }
TS_INTEROP_1(getReferenceLength,KInt,KNativePointer)485 TS_INTEROP_1(getReferenceLength, KInt, KNativePointer)
486 
487 KNativePointer impl_getReferenceFileName(KNativePointer ref)
488 {
489     auto *refPtr = reinterpret_cast<ReferenceInfo *>(ref);
490     return new std::string(refPtr->fileName);
491 }
TS_INTEROP_1(getReferenceFileName,KNativePointer,KNativePointer)492 TS_INTEROP_1(getReferenceFileName, KNativePointer, KNativePointer)
493 
494 KNativePointer impl_getDeclInfoFileName(KNativePointer declInfo)
495 {
496     auto *declInfoPtr = reinterpret_cast<DeclInfo *>(declInfo);
497     return new std::string(declInfoPtr->fileName);
498 }
TS_INTEROP_1(getDeclInfoFileName,KNativePointer,KNativePointer)499 TS_INTEROP_1(getDeclInfoFileName, KNativePointer, KNativePointer)
500 
501 KNativePointer impl_getDeclInfoFileText(KNativePointer declInfo)
502 {
503     auto *declInfoPtr = reinterpret_cast<DeclInfo *>(declInfo);
504     return new std::string(declInfoPtr->fileText);
505 }
TS_INTEROP_1(getDeclInfoFileText,KNativePointer,KNativePointer)506 TS_INTEROP_1(getDeclInfoFileText, KNativePointer, KNativePointer)
507 
508 KNativePointer impl_getQuickInfoAtPosition(KStringPtr &filenamePtr, KNativePointer context, KInt position)
509 {
510     LSPAPI const *ctx = GetImpl();
511     auto *qi = new QuickInfo(ctx->getQuickInfoAtPosition(GetStringCopy(filenamePtr),
512                                                          reinterpret_cast<es2panda_Context *>(context), position));
513     return qi;
514 }
TS_INTEROP_3(getQuickInfoAtPosition,KNativePointer,KStringPtr,KNativePointer,KInt)515 TS_INTEROP_3(getQuickInfoAtPosition, KNativePointer, KStringPtr, KNativePointer, KInt)
516 
517 KNativePointer impl_getCompletionAtPosition(KNativePointer context, KInt position)
518 {
519     LSPAPI const *ctx = GetImpl();
520     auto *ci = new ark::es2panda::lsp::CompletionInfo(
521         ctx->getCompletionsAtPosition(reinterpret_cast<es2panda_Context *>(context), position));
522     return ci;
523 }
TS_INTEROP_2(getCompletionAtPosition,KNativePointer,KNativePointer,KInt)524 TS_INTEROP_2(getCompletionAtPosition, KNativePointer, KNativePointer, KInt)
525 
526 KNativePointer impl_organizeImports(KNativePointer context, KStringPtr &filenamePtr)
527 {
528     LSPAPI const *ctx = GetImpl();
529     auto result = ctx->OrganizeImportsImpl(reinterpret_cast<es2panda_Context *>(context), GetStringCopy(filenamePtr));
530     return new std::vector<FileTextChanges>(result);
531 }
TS_INTEROP_2(organizeImports,KNativePointer,KNativePointer,KStringPtr)532 TS_INTEROP_2(organizeImports, KNativePointer, KNativePointer, KStringPtr)
533 
534 KNativePointer impl_getFileTextChanges(KNativePointer fileTextChangesVecPtr)
535 {
536     auto *vec = reinterpret_cast<std::vector<FileTextChanges> *>(fileTextChangesVecPtr);
537     std::vector<void *> ptrs;
538     for (auto &el : *vec) {
539         ptrs.push_back(new FileTextChanges(el));
540     }
541     return new std::vector<void *>(ptrs);
542 }
TS_INTEROP_1(getFileTextChanges,KNativePointer,KNativePointer)543 TS_INTEROP_1(getFileTextChanges, KNativePointer, KNativePointer)
544 
545 KNativePointer impl_getFileNameFromFileTextChanges(KNativePointer fileTextChangesPtr)
546 {
547     auto *ftc = reinterpret_cast<FileTextChanges *>(fileTextChangesPtr);
548     return new std::string(ftc->fileName);
549 }
TS_INTEROP_1(getFileNameFromFileTextChanges,KNativePointer,KNativePointer)550 TS_INTEROP_1(getFileNameFromFileTextChanges, KNativePointer, KNativePointer)
551 
552 KNativePointer impl_getTextChangesFromFileTextChanges(KNativePointer fileTextChangesPtr)
553 {
554     auto *ftc = reinterpret_cast<FileTextChanges *>(fileTextChangesPtr);
555     std::vector<void *> ptrs;
556     for (auto &el : ftc->textChanges) {
557         ptrs.push_back(new TextChange(el));
558     }
559     return new std::vector<void *>(ptrs);
560 }
TS_INTEROP_1(getTextChangesFromFileTextChanges,KNativePointer,KNativePointer)561 TS_INTEROP_1(getTextChangesFromFileTextChanges, KNativePointer, KNativePointer)
562 
563 KNativePointer impl_getTextSpanFromTextChange(KNativePointer textChangePtr)
564 {
565     auto *tc = reinterpret_cast<TextChange *>(textChangePtr);
566     return new TextSpan(tc->span);
567 }
TS_INTEROP_1(getTextSpanFromTextChange,KNativePointer,KNativePointer)568 TS_INTEROP_1(getTextSpanFromTextChange, KNativePointer, KNativePointer)
569 
570 KNativePointer impl_getNewTextFromTextChange(KNativePointer textChangePtr)
571 {
572     auto *tc = reinterpret_cast<TextChange *>(textChangePtr);
573     return new std::string(tc->newText);
574 }
TS_INTEROP_1(getNewTextFromTextChange,KNativePointer,KNativePointer)575 TS_INTEROP_1(getNewTextFromTextChange, KNativePointer, KNativePointer)
576 
577 KNativePointer impl_getCompletionEntryDetails(KStringPtr &entrynamePtr, KStringPtr &filenamePtr, KNativePointer context,
578                                               KInt position)
579 {
580     LSPAPI const *ctx = GetImpl();
581     auto *ci = new CompletionEntryDetails(
582         ctx->getCompletionEntryDetails(GetStringCopy(entrynamePtr), GetStringCopy(filenamePtr),
583                                        reinterpret_cast<es2panda_Context *>(context), position));
584     return ci;
585 }
TS_INTEROP_4(getCompletionEntryDetails,KNativePointer,KStringPtr,KStringPtr,KNativePointer,KInt)586 TS_INTEROP_4(getCompletionEntryDetails, KNativePointer, KStringPtr, KStringPtr, KNativePointer, KInt)
587 
588 KNativePointer impl_getImplementationAtPosition(KNativePointer context, KInt position)
589 {
590     LSPAPI const *ctx = GetImpl();
591     auto *defInfo = new DefinitionInfo(ctx->getImplementationAtPosition(reinterpret_cast<es2panda_Context *>(context),
592                                                                         static_cast<std::size_t>(position)));
593     return defInfo;
594 }
TS_INTEROP_2(getImplementationAtPosition,KNativePointer,KNativePointer,KInt)595 TS_INTEROP_2(getImplementationAtPosition, KNativePointer, KNativePointer, KInt)
596 
597 KNativePointer impl_getDefinitionAtPosition(KNativePointer context, KInt position)
598 {
599     LSPAPI const *ctx = GetImpl();
600     auto *defInfo = new DefinitionInfo(ctx->getDefinitionAtPosition(reinterpret_cast<es2panda_Context *>(context),
601                                                                     static_cast<std::size_t>(position)));
602     return defInfo;
603 }
TS_INTEROP_2(getDefinitionAtPosition,KNativePointer,KNativePointer,KInt)604 TS_INTEROP_2(getDefinitionAtPosition, KNativePointer, KNativePointer, KInt)
605 
606 KNativePointer impl_getFileNameFromDef(KNativePointer defPtr)
607 {
608     auto *defInfo = reinterpret_cast<DefinitionInfo *>(defPtr);
609     return new std::string(defInfo->fileName);
610 }
TS_INTEROP_1(getFileNameFromDef,KNativePointer,KNativePointer)611 TS_INTEROP_1(getFileNameFromDef, KNativePointer, KNativePointer)
612 
613 KInt impl_getStartFromDef(KNativePointer defPtr)
614 {
615     auto *defInfo = reinterpret_cast<DefinitionInfo *>(defPtr);
616     return defInfo->start;
617 }
TS_INTEROP_1(getStartFromDef,KInt,KNativePointer)618 TS_INTEROP_1(getStartFromDef, KInt, KNativePointer)
619 
620 KInt impl_getLengthFromDef(KNativePointer defPtr)
621 {
622     auto *defInfo = reinterpret_cast<DefinitionInfo *>(defPtr);
623     return defInfo->length;
624 }
TS_INTEROP_1(getLengthFromDef,KInt,KNativePointer)625 TS_INTEROP_1(getLengthFromDef, KInt, KNativePointer)
626 
627 KNativePointer impl_getDocumentHighlights(KNativePointer context, KInt pos)
628 {
629     LSPAPI const *ctx = GetImpl();
630     auto *docs = new DocumentHighlightsReferences(
631         ctx->getDocumentHighlights(reinterpret_cast<es2panda_Context *>(context), pos));
632     return docs;
633 }
TS_INTEROP_2(getDocumentHighlights,KNativePointer,KNativePointer,KInt)634 TS_INTEROP_2(getDocumentHighlights, KNativePointer, KNativePointer, KInt)
635 
636 KNativePointer impl_getDocumentHighs(KNativePointer doc)
637 {
638     auto *dhr = reinterpret_cast<DocumentHighlightsReferences *>(doc);
639     std::vector<void *> ptrs;
640     for (auto &el : dhr->documentHighlights_) {
641         ptrs.push_back(new DocumentHighlights(el));
642     }
643     return new std::vector<void *>(ptrs);
644 }
TS_INTEROP_1(getDocumentHighs,KNativePointer,KNativePointer)645 TS_INTEROP_1(getDocumentHighs, KNativePointer, KNativePointer)
646 
647 KNativePointer impl_getSuggestionDiagnostics(KNativePointer context)
648 {
649     LSPAPI const *ctx = GetImpl();
650     auto *ptrDiag =
651         new DiagnosticReferences(ctx->getSuggestionDiagnostics(reinterpret_cast<es2panda_Context *>(context)));
652     return ptrDiag;
653 }
TS_INTEROP_1(getSuggestionDiagnostics,KNativePointer,KNativePointer)654 TS_INTEROP_1(getSuggestionDiagnostics, KNativePointer, KNativePointer)
655 
656 KNativePointer impl_getDisplayPartsText(KNativePointer ref)
657 {
658     auto *refPtr = reinterpret_cast<SymbolDisplayPart *>(ref);
659     return new std::string(refPtr->GetText());
660 }
TS_INTEROP_1(getDisplayPartsText,KNativePointer,KNativePointer)661 TS_INTEROP_1(getDisplayPartsText, KNativePointer, KNativePointer)
662 
663 KNativePointer impl_getDisplayPartsKind(KNativePointer ref)
664 {
665     auto *refPtr = reinterpret_cast<SymbolDisplayPart *>(ref);
666     return new std::string(refPtr->GetKind());
667 }
TS_INTEROP_1(getDisplayPartsKind,KNativePointer,KNativePointer)668 TS_INTEROP_1(getDisplayPartsKind, KNativePointer, KNativePointer)
669 
670 KNativePointer impl_getQuickInfoKind(KNativePointer quickInfoPtr)
671 {
672     auto *quickInfo = reinterpret_cast<QuickInfo *>(quickInfoPtr);
673     return new std::string(quickInfo->GetKind());
674 }
TS_INTEROP_1(getQuickInfoKind,KNativePointer,KNativePointer)675 TS_INTEROP_1(getQuickInfoKind, KNativePointer, KNativePointer)
676 
677 KNativePointer impl_getQuickInfoKindModifier(KNativePointer ref)
678 {
679     auto *refPtr = reinterpret_cast<QuickInfo *>(ref);
680     return new std::string(refPtr->GetKindModifiers());
681 }
TS_INTEROP_1(getQuickInfoKindModifier,KNativePointer,KNativePointer)682 TS_INTEROP_1(getQuickInfoKindModifier, KNativePointer, KNativePointer)
683 
684 KNativePointer impl_getQuickInfoFileName(KNativePointer ref)
685 {
686     auto *refPtr = reinterpret_cast<QuickInfo *>(ref);
687     return new std::string(refPtr->GetFileName());
688 }
TS_INTEROP_1(getQuickInfoFileName,KNativePointer,KNativePointer)689 TS_INTEROP_1(getQuickInfoFileName, KNativePointer, KNativePointer)
690 
691 KNativePointer impl_getClassHierarchyInfo(KNativePointer context, KInt position)
692 {
693     LSPAPI const *ctx = GetImpl();
694     if (ctx == nullptr) {
695         return nullptr;
696     }
697     auto *classHierarchyPtr =
698         new ClassHierarchy(ctx->getClassHierarchyInfo(reinterpret_cast<es2panda_Context *>(context), position));
699     return classHierarchyPtr;
700 }
TS_INTEROP_2(getClassHierarchyInfo,KNativePointer,KNativePointer,KInt)701 TS_INTEROP_2(getClassHierarchyInfo, KNativePointer, KNativePointer, KInt)
702 
703 KNativePointer impl_castToClassHierarchyInfos(KNativePointer infos)
704 {
705     auto *infosPtr = reinterpret_cast<ClassHierarchy *>(infos);
706     if (infosPtr == nullptr) {
707         return nullptr;
708     }
709     std::vector<void *> ptrs;
710     for (const auto &element : *infosPtr) {
711         ptrs.push_back(new ClassHierarchyInfo(element));
712     }
713     return new std::vector<void *>(ptrs);
714 }
TS_INTEROP_1(castToClassHierarchyInfos,KNativePointer,KNativePointer)715 TS_INTEROP_1(castToClassHierarchyInfos, KNativePointer, KNativePointer)
716 
717 KNativePointer impl_getClassNameFromClassHierarchyInfo(KNativePointer info)
718 {
719     auto *infoPtr = reinterpret_cast<ClassHierarchyInfo *>(info);
720     if (infoPtr == nullptr) {
721         return nullptr;
722     }
723     return new std::string(infoPtr->GetClassName());
724 }
TS_INTEROP_1(getClassNameFromClassHierarchyInfo,KNativePointer,KNativePointer)725 TS_INTEROP_1(getClassNameFromClassHierarchyInfo, KNativePointer, KNativePointer)
726 
727 KNativePointer impl_getMethodItemsFromClassHierarchyInfo(KNativePointer info)
728 {
729     auto *infoPtr = reinterpret_cast<ClassHierarchyInfo *>(info);
730     if (infoPtr == nullptr) {
731         return nullptr;
732     }
733     std::vector<void *> ptrs;
734     for (const auto &element : infoPtr->GetMethodItemList()) {
735         if (element.second == nullptr) {
736             continue;
737         }
738         ptrs.push_back(new ClassMethodItem(*(element.second)));
739     }
740     return new std::vector<void *>(ptrs);
741 }
TS_INTEROP_1(getMethodItemsFromClassHierarchyInfo,KNativePointer,KNativePointer)742 TS_INTEROP_1(getMethodItemsFromClassHierarchyInfo, KNativePointer, KNativePointer)
743 
744 KNativePointer impl_getPropertyItemsFromClassHierarchyInfo(KNativePointer info)
745 {
746     auto *infoPtr = reinterpret_cast<ClassHierarchyInfo *>(info);
747     if (infoPtr == nullptr) {
748         return nullptr;
749     }
750     std::vector<void *> ptrs;
751     for (const auto &element : infoPtr->GetPropertyItemList()) {
752         if (element.second == nullptr) {
753             continue;
754         }
755         ptrs.push_back(new ClassPropertyItem(*(element.second)));
756     }
757     return new std::vector<void *>(ptrs);
758 }
TS_INTEROP_1(getPropertyItemsFromClassHierarchyInfo,KNativePointer,KNativePointer)759 TS_INTEROP_1(getPropertyItemsFromClassHierarchyInfo, KNativePointer, KNativePointer)
760 
761 KNativePointer impl_getDetailFromClassHierarchyItem(KNativePointer item)
762 {
763     auto *itemPtr = reinterpret_cast<ClassHierarchyItem *>(item);
764     if (itemPtr == nullptr) {
765         return nullptr;
766     }
767     return new std::string(itemPtr->GetDetail());
768 }
TS_INTEROP_1(getDetailFromClassHierarchyItem,KNativePointer,KNativePointer)769 TS_INTEROP_1(getDetailFromClassHierarchyItem, KNativePointer, KNativePointer)
770 
771 KInt impl_getSetterStyleFromClassMethodItem(KNativePointer item)
772 {
773     auto *itemPtr = reinterpret_cast<ClassMethodItem *>(item);
774     if (itemPtr == nullptr) {
775         return 0;
776     }
777     return static_cast<size_t>(itemPtr->GetSetterStyle());
778 }
TS_INTEROP_1(getSetterStyleFromClassMethodItem,KInt,KNativePointer)779 TS_INTEROP_1(getSetterStyleFromClassMethodItem, KInt, KNativePointer)
780 
781 KInt impl_getAccessModifierStyleFromClassHierarchyItem(KNativePointer item)
782 {
783     auto *itemPtr = reinterpret_cast<ClassHierarchyItem *>(item);
784     if (itemPtr == nullptr) {
785         return 0;
786     }
787     return static_cast<size_t>(itemPtr->GetAccessModifierStyle());
788 }
TS_INTEROP_1(getAccessModifierStyleFromClassHierarchyItem,KInt,KNativePointer)789 TS_INTEROP_1(getAccessModifierStyleFromClassHierarchyItem, KInt, KNativePointer)
790 
791 KInt impl_getAliasScriptElementKind(KNativePointer context, KInt position)
792 {
793     LSPAPI const *ctx = GetImpl();
794     if (ctx == nullptr) {
795         return 1;
796     }
797     auto kind =
798         static_cast<KInt>(ctx->getAliasScriptElementKind(reinterpret_cast<es2panda_Context *>(context), position));
799     return kind;
800 }
TS_INTEROP_2(getAliasScriptElementKind,KInt,KNativePointer,KInt)801 TS_INTEROP_2(getAliasScriptElementKind, KInt, KNativePointer, KInt)
802 
803 KNativePointer impl_getClassHierarchies(KNativePointer context, KStringPtr &fileNamePtr, KInt pos)
804 {
805     LSPAPI const *ctx = GetImpl();
806     if (ctx == nullptr) {
807         return nullptr;
808     }
809     auto infos =
810         ctx->getClassHierarchiesImpl(reinterpret_cast<es2panda_Context *>(context), GetStringCopy(fileNamePtr), pos);
811     std::vector<void *> ptrs;
812     ptrs.reserve(infos.size());
813     for (auto &info : infos) {
814         ptrs.push_back(new ark::es2panda::lsp::ClassHierarchyItemInfo(info));
815     }
816     return new std::vector<void *>(std::move(ptrs));
817 }
TS_INTEROP_3(getClassHierarchies,KNativePointer,KNativePointer,KStringPtr,KInt)818 TS_INTEROP_3(getClassHierarchies, KNativePointer, KNativePointer, KStringPtr, KInt)
819 
820 KNativePointer impl_getApplicableRefactors(KNativePointer context, KStringPtr &kindPtr, KInt position)
821 {
822     LSPAPI const *ctx = GetImpl();
823     auto *result = new std::vector<ark::es2panda::lsp::ApplicableRefactorInfo>(ctx->getApplicableRefactors(
824         reinterpret_cast<es2panda_Context *>(context), GetStringCopy(kindPtr), static_cast<std::size_t>(position)));
825     return result;
826 }
TS_INTEROP_3(getApplicableRefactors,KNativePointer,KNativePointer,KStringPtr,KInt)827 TS_INTEROP_3(getApplicableRefactors, KNativePointer, KNativePointer, KStringPtr, KInt)
828 
829 KNativePointer impl_getApplicableRefactorInfoList(KNativePointer infosPtr)
830 {
831     auto *infos = reinterpret_cast<std::vector<ark::es2panda::lsp::ApplicableRefactorInfo> *>(infosPtr);
832     std::vector<void *> ptrs;
833     for (auto &info : *infos) {
834         ptrs.push_back(new ark::es2panda::lsp::ApplicableRefactorInfo(info));
835     }
836     return new std::vector<void *>(ptrs);
837 }
TS_INTEROP_1(getApplicableRefactorInfoList,KNativePointer,KNativePointer)838 TS_INTEROP_1(getApplicableRefactorInfoList, KNativePointer, KNativePointer)
839 
840 KNativePointer impl_getRefactorActionName(KNativePointer refactorActionPtr)
841 {
842     auto *refactorAction = reinterpret_cast<ark::es2panda::lsp::RefactorAction *>(refactorActionPtr);
843     return new std::string(refactorAction->name);
844 }
TS_INTEROP_1(getRefactorActionName,KNativePointer,KNativePointer)845 TS_INTEROP_1(getRefactorActionName, KNativePointer, KNativePointer)
846 
847 KNativePointer impl_getRefactorActionDescription(KNativePointer refactorActionPtr)
848 {
849     auto *refactorAction = reinterpret_cast<ark::es2panda::lsp::RefactorAction *>(refactorActionPtr);
850     return new std::string(refactorAction->description);
851 }
TS_INTEROP_1(getRefactorActionDescription,KNativePointer,KNativePointer)852 TS_INTEROP_1(getRefactorActionDescription, KNativePointer, KNativePointer)
853 
854 KNativePointer impl_getRefactorActionKind(KNativePointer refactorActionPtr)
855 {
856     auto *refactorAction = reinterpret_cast<ark::es2panda::lsp::RefactorAction *>(refactorActionPtr);
857     return new std::string(refactorAction->kind);
858 }
TS_INTEROP_1(getRefactorActionKind,KNativePointer,KNativePointer)859 TS_INTEROP_1(getRefactorActionKind, KNativePointer, KNativePointer)
860 
861 KNativePointer impl_getApplicableRefactorName(KNativePointer applRefsPtr)
862 {
863     auto *applRefsInfo = reinterpret_cast<ark::es2panda::lsp::ApplicableRefactorInfo *>(applRefsPtr);
864     return new std::string(applRefsInfo->name);
865 }
TS_INTEROP_1(getApplicableRefactorName,KNativePointer,KNativePointer)866 TS_INTEROP_1(getApplicableRefactorName, KNativePointer, KNativePointer)
867 
868 KNativePointer impl_getApplicableRefactorDescription(KNativePointer applRefsPtr)
869 {
870     auto *applRefsInfo = reinterpret_cast<ark::es2panda::lsp::ApplicableRefactorInfo *>(applRefsPtr);
871     return new std::string(applRefsInfo->description);
872 }
TS_INTEROP_1(getApplicableRefactorDescription,KNativePointer,KNativePointer)873 TS_INTEROP_1(getApplicableRefactorDescription, KNativePointer, KNativePointer)
874 
875 KNativePointer impl_getApplicableRefactorAction(KNativePointer applRefsPtr)
876 {
877     auto *applRefsInfo = reinterpret_cast<ark::es2panda::lsp::ApplicableRefactorInfo *>(applRefsPtr);
878     return new ark::es2panda::lsp::RefactorAction(applRefsInfo->action);
879 }
TS_INTEROP_1(getApplicableRefactorAction,KNativePointer,KNativePointer)880 TS_INTEROP_1(getApplicableRefactorAction, KNativePointer, KNativePointer)
881 
882 KNativePointer impl_getClassHierarchyList(KNativePointer infosPtr)
883 {
884     auto *infos = reinterpret_cast<std::vector<ark::es2panda::lsp::ClassHierarchyItemInfo> *>(infosPtr);
885     std::vector<void *> infoPtrList;
886     for (auto &info : *infos) {
887         infoPtrList.push_back(new ark::es2panda::lsp::ClassHierarchyItemInfo(info));
888     }
889     return new std::vector<void *>(infoPtrList);
890 }
TS_INTEROP_1(getClassHierarchyList,KNativePointer,KNativePointer)891 TS_INTEROP_1(getClassHierarchyList, KNativePointer, KNativePointer)
892 
893 KInt impl_getPosFromClassHierarchyItemInfo(KNativePointer infoPtr)
894 {
895     auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
896     return static_cast<KInt>(info->pos);
897 }
TS_INTEROP_1(getPosFromClassHierarchyItemInfo,KInt,KNativePointer)898 TS_INTEROP_1(getPosFromClassHierarchyItemInfo, KInt, KNativePointer)
899 
900 KInt impl_getKindFromClassHierarchyItemInfo(KNativePointer infoPtr)
901 {
902     auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
903     return static_cast<KInt>(info->kind);
904 }
TS_INTEROP_1(getKindFromClassHierarchyItemInfo,KInt,KNativePointer)905 TS_INTEROP_1(getKindFromClassHierarchyItemInfo, KInt, KNativePointer)
906 
907 KNativePointer impl_getDescriptionFromClassHierarchyItemInfo(KNativePointer infoPtr)
908 {
909     auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
910     auto description = info->description;
911     return new std::string(description);
912 }
TS_INTEROP_1(getDescriptionFromClassHierarchyItemInfo,KNativePointer,KNativePointer)913 TS_INTEROP_1(getDescriptionFromClassHierarchyItemInfo, KNativePointer, KNativePointer)
914 
915 KNativePointer impl_getOverriddenFromClassHierarchyItemInfo(KNativePointer infoPtr)
916 {
917     auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
918     auto &overridden = info->overridden;
919     std::vector<void *> overriddenPtrList;
920     overriddenPtrList.reserve(overridden.size());
921     size_t idx = 0;
922     for (auto &details : overridden) {
923         overriddenPtrList[idx++] = new ark::es2panda::lsp::ClassRelationDetails(details);
924     }
925     return new std::vector<void *>(std::move(overriddenPtrList));
926 }
TS_INTEROP_1(getOverriddenFromClassHierarchyItemInfo,KNativePointer,KNativePointer)927 TS_INTEROP_1(getOverriddenFromClassHierarchyItemInfo, KNativePointer, KNativePointer)
928 
929 KNativePointer impl_getOverridingFromClassHierarchyItemInfo(KNativePointer infoPtr)
930 {
931     auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
932     auto &overriding = info->overriding;
933     std::vector<void *> overridingPtrList;
934     overridingPtrList.reserve(overriding.size());
935     size_t idx = 0;
936     for (auto &details : overriding) {
937         overridingPtrList[idx++] = new ark::es2panda::lsp::ClassRelationDetails(details);
938     }
939     return new std::vector<void *>(std::move(overridingPtrList));
940 }
TS_INTEROP_1(getOverridingFromClassHierarchyItemInfo,KNativePointer,KNativePointer)941 TS_INTEROP_1(getOverridingFromClassHierarchyItemInfo, KNativePointer, KNativePointer)
942 
943 KNativePointer impl_getImplementedFromClassHierarchyItemInfo(KNativePointer infoPtr)
944 {
945     auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
946     auto implemented = info->implemented;
947     std::vector<void *> implementedPtrList;
948     implementedPtrList.reserve(implemented.size());
949     size_t idx = 0;
950     for (auto &details : implemented) {
951         implementedPtrList[idx++] = new ark::es2panda::lsp::ClassRelationDetails(details);
952     }
953     return new std::vector<void *>(std::move(implementedPtrList));
954 }
TS_INTEROP_1(getImplementedFromClassHierarchyItemInfo,KNativePointer,KNativePointer)955 TS_INTEROP_1(getImplementedFromClassHierarchyItemInfo, KNativePointer, KNativePointer)
956 
957 KNativePointer impl_getImplementingFromClassHierarchyItemInfo(KNativePointer infoPtr)
958 {
959     auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
960     auto implementing = info->implementing;
961     std::vector<void *> implementingPtrList;
962     implementingPtrList.reserve(implementing.size());
963     size_t idx = 0;
964     for (auto &details : implementing) {
965         implementingPtrList[idx++] = new ark::es2panda::lsp::ClassRelationDetails(details);
966     }
967     return new std::vector<void *>(std::move(implementingPtrList));
968 }
TS_INTEROP_1(getImplementingFromClassHierarchyItemInfo,KNativePointer,KNativePointer)969 TS_INTEROP_1(getImplementingFromClassHierarchyItemInfo, KNativePointer, KNativePointer)
970 
971 KNativePointer impl_getFileNameFromClassRelationDetails(KNativePointer detailsPtr)
972 {
973     auto *details = reinterpret_cast<ark::es2panda::lsp::ClassRelationDetails *>(detailsPtr);
974     return new std::string(details->fileName);
975 }
TS_INTEROP_1(getFileNameFromClassRelationDetails,KNativePointer,KNativePointer)976 TS_INTEROP_1(getFileNameFromClassRelationDetails, KNativePointer, KNativePointer)
977 
978 KInt impl_getPosFromClassRelationDetails(KNativePointer detailsPtr)
979 {
980     auto *details = reinterpret_cast<ark::es2panda::lsp::ClassRelationDetails *>(detailsPtr);
981     return static_cast<KInt>(details->pos);
982 }
TS_INTEROP_1(getPosFromClassRelationDetails,KInt,KNativePointer)983 TS_INTEROP_1(getPosFromClassRelationDetails, KInt, KNativePointer)
984 
985 KInt impl_getKindFromClassRelationDetails(KNativePointer detailsPtr)
986 {
987     auto *details = reinterpret_cast<ark::es2panda::lsp::ClassRelationDetails *>(detailsPtr);
988     return static_cast<KInt>(details->kind);
989 }
TS_INTEROP_1(getKindFromClassRelationDetails,KInt,KNativePointer)990 TS_INTEROP_1(getKindFromClassRelationDetails, KInt, KNativePointer)
991 
992 KNativePointer impl_getSymbolDisplayPart(KNativePointer quickInfoPtr)
993 {
994     auto *quickInfo = reinterpret_cast<QuickInfo *>(quickInfoPtr);
995     std::vector<void *> ptrs;
996     for (auto &el : quickInfo->GetDisplayParts()) {
997         ptrs.push_back(new SymbolDisplayPart(el));
998     }
999     return new std::vector<void *>(ptrs);
1000 }
TS_INTEROP_1(getSymbolDisplayPart,KNativePointer,KNativePointer)1001 TS_INTEROP_1(getSymbolDisplayPart, KNativePointer, KNativePointer)
1002 
1003 KInt impl_getTextSpanStart(KNativePointer textSpanPtr)
1004 {
1005     auto *textSpan = reinterpret_cast<TextSpan *>(textSpanPtr);
1006     return textSpan->start;
1007 }
TS_INTEROP_1(getTextSpanStart,KInt,KNativePointer)1008 TS_INTEROP_1(getTextSpanStart, KInt, KNativePointer)
1009 
1010 KInt impl_getTextSpanLength(KNativePointer textSpanPtr)
1011 {
1012     auto *textSpan = reinterpret_cast<TextSpan *>(textSpanPtr);
1013     return textSpan->length;
1014 }
TS_INTEROP_1(getTextSpanLength,KInt,KNativePointer)1015 TS_INTEROP_1(getTextSpanLength, KInt, KNativePointer)
1016 
1017 KNativePointer impl_getTextSpan(KNativePointer quickInfoPtr)
1018 {
1019     auto *quickInfo = reinterpret_cast<QuickInfo *>(quickInfoPtr);
1020     return new TextSpan(quickInfo->GetTextSpan());
1021 }
TS_INTEROP_1(getTextSpan,KNativePointer,KNativePointer)1022 TS_INTEROP_1(getTextSpan, KNativePointer, KNativePointer)
1023 
1024 KNativePointer impl_createTextSpan(KInt start, KInt length)
1025 {
1026     return new TextSpan(start, length);
1027 }
TS_INTEROP_2(createTextSpan,KNativePointer,KInt,KInt)1028 TS_INTEROP_2(createTextSpan, KNativePointer, KInt, KInt)
1029 
1030 KNativePointer impl_getHighlightTextSpan(KNativePointer highlightPtr)
1031 {
1032     auto *highlight = reinterpret_cast<HighlightSpan *>(highlightPtr);
1033     return new TextSpan(highlight->textSpan_);
1034 }
TS_INTEROP_1(getHighlightTextSpan,KNativePointer,KNativePointer)1035 TS_INTEROP_1(getHighlightTextSpan, KNativePointer, KNativePointer)
1036 
1037 KNativePointer impl_getHighlightContextSpan(KNativePointer highlightPtr)
1038 {
1039     auto *highlight = reinterpret_cast<HighlightSpan *>(highlightPtr);
1040     return new TextSpan(highlight->contextSpan_);
1041 }
TS_INTEROP_1(getHighlightContextSpan,KNativePointer,KNativePointer)1042 TS_INTEROP_1(getHighlightContextSpan, KNativePointer, KNativePointer)
1043 
1044 KNativePointer impl_getHighlightFileName(KNativePointer highlightPtr)
1045 {
1046     auto *highlight = reinterpret_cast<HighlightSpan *>(highlightPtr);
1047     return new std::string(highlight->fileName_);
1048 }
TS_INTEROP_1(getHighlightFileName,KNativePointer,KNativePointer)1049 TS_INTEROP_1(getHighlightFileName, KNativePointer, KNativePointer)
1050 
1051 KInt impl_getHighlightIsInString(KNativePointer highlightPtr)
1052 {
1053     auto *highlight = reinterpret_cast<HighlightSpan *>(highlightPtr);
1054     return static_cast<int>(highlight->isInString_);
1055 }
TS_INTEROP_1(getHighlightIsInString,KInt,KNativePointer)1056 TS_INTEROP_1(getHighlightIsInString, KInt, KNativePointer)
1057 
1058 KInt impl_getHighlightKind(KNativePointer highlightPtr)
1059 {
1060     auto *highlight = reinterpret_cast<HighlightSpan *>(highlightPtr);
1061     return static_cast<size_t>(highlight->kind_);
1062 }
TS_INTEROP_1(getHighlightKind,KInt,KNativePointer)1063 TS_INTEROP_1(getHighlightKind, KInt, KNativePointer)
1064 
1065 KNativePointer impl_getHighlightSpanFromHighlights(KNativePointer documentHighlightsPtr)
1066 {
1067     auto *documentHighlights = reinterpret_cast<DocumentHighlights *>(documentHighlightsPtr);
1068     std::vector<void *> ptrs;
1069     for (auto &el : documentHighlights->highlightSpans_) {
1070         ptrs.push_back(new HighlightSpan(el));
1071     }
1072     return new std::vector<void *>(ptrs);
1073 }
TS_INTEROP_1(getHighlightSpanFromHighlights,KNativePointer,KNativePointer)1074 TS_INTEROP_1(getHighlightSpanFromHighlights, KNativePointer, KNativePointer)
1075 
1076 KNativePointer impl_getDocumentHighlightsFromRef(KNativePointer documentHighlightsReferencesPtr)
1077 {
1078     auto *documentHighlightsReferences =
1079         reinterpret_cast<DocumentHighlightsReferences *>(documentHighlightsReferencesPtr);
1080     std::vector<void *> ptrs;
1081     for (auto &el : documentHighlightsReferences->documentHighlights_) {
1082         ptrs.push_back(new DocumentHighlights(el));
1083     }
1084     return new std::vector<void *>(ptrs);
1085 }
TS_INTEROP_1(getDocumentHighlightsFromRef,KNativePointer,KNativePointer)1086 TS_INTEROP_1(getDocumentHighlightsFromRef, KNativePointer, KNativePointer)
1087 
1088 KNativePointer impl_getFileNameFromEntryData(KNativePointer entryDataPtr)
1089 {
1090     auto *entryData = reinterpret_cast<ark::es2panda::lsp::CompletionEntryData *>(entryDataPtr);
1091     return new std::string(entryData->GetFileName());
1092 }
TS_INTEROP_1(getFileNameFromEntryData,KNativePointer,KNativePointer)1093 TS_INTEROP_1(getFileNameFromEntryData, KNativePointer, KNativePointer)
1094 
1095 KNativePointer impl_getNamedExportFromEntryData(KNativePointer entryDataPtr)
1096 {
1097     auto *entryData = reinterpret_cast<ark::es2panda::lsp::CompletionEntryData *>(entryDataPtr);
1098     return new std::string(entryData->GetNamedExport());
1099 }
TS_INTEROP_1(getNamedExportFromEntryData,KNativePointer,KNativePointer)1100 TS_INTEROP_1(getNamedExportFromEntryData, KNativePointer, KNativePointer)
1101 
1102 KNativePointer impl_getImportDeclarationFromEntryData(KNativePointer entryDataPtr)
1103 {
1104     auto *entryData = reinterpret_cast<ark::es2panda::lsp::CompletionEntryData *>(entryDataPtr);
1105     return new std::string(entryData->GetImportDeclaration());
1106 }
TS_INTEROP_1(getImportDeclarationFromEntryData,KNativePointer,KNativePointer)1107 TS_INTEROP_1(getImportDeclarationFromEntryData, KNativePointer, KNativePointer)
1108 
1109 KInt impl_getStatusFromEntryData(KNativePointer entryDataPtr)
1110 {
1111     auto *entryData = reinterpret_cast<ark::es2panda::lsp::CompletionEntryData *>(entryDataPtr);
1112     return static_cast<size_t>(entryData->GetStatus());
1113 }
TS_INTEROP_1(getStatusFromEntryData,KInt,KNativePointer)1114 TS_INTEROP_1(getStatusFromEntryData, KInt, KNativePointer)
1115 
1116 KNativePointer impl_getNameFromEntry(KNativePointer entryPtr)
1117 {
1118     auto *entry = reinterpret_cast<ark::es2panda::lsp::CompletionEntry *>(entryPtr);
1119     return new std::string(entry->GetName());
1120 }
TS_INTEROP_1(getNameFromEntry,KNativePointer,KNativePointer)1121 TS_INTEROP_1(getNameFromEntry, KNativePointer, KNativePointer)
1122 
1123 KNativePointer impl_getSortTextFromEntry(KNativePointer entryPtr)
1124 {
1125     auto *entry = reinterpret_cast<ark::es2panda::lsp::CompletionEntry *>(entryPtr);
1126     return new std::string(entry->GetSortText());
1127 }
TS_INTEROP_1(getSortTextFromEntry,KNativePointer,KNativePointer)1128 TS_INTEROP_1(getSortTextFromEntry, KNativePointer, KNativePointer)
1129 
1130 KNativePointer impl_getInsertTextFromEntry(KNativePointer entryPtr)
1131 {
1132     auto *entry = reinterpret_cast<ark::es2panda::lsp::CompletionEntry *>(entryPtr);
1133     return new std::string(entry->GetInsertText());
1134 }
TS_INTEROP_1(getInsertTextFromEntry,KNativePointer,KNativePointer)1135 TS_INTEROP_1(getInsertTextFromEntry, KNativePointer, KNativePointer)
1136 
1137 KInt impl_getKindFromEntry(KNativePointer entryPtr)
1138 {
1139     auto *entry = reinterpret_cast<ark::es2panda::lsp::CompletionEntry *>(entryPtr);
1140     return static_cast<size_t>(entry->GetCompletionKind());
1141 }
TS_INTEROP_1(getKindFromEntry,KInt,KNativePointer)1142 TS_INTEROP_1(getKindFromEntry, KInt, KNativePointer)
1143 
1144 KNativePointer impl_getDataFromEntry(KNativePointer entryPtr)
1145 {
1146     auto *entry = reinterpret_cast<ark::es2panda::lsp::CompletionEntry *>(entryPtr);
1147     auto data = entry->GetCompletionEntryData();
1148 
1149     if (data.has_value()) {
1150         return new ark::es2panda::lsp::CompletionEntryData(data.value());
1151     }
1152     return nullptr;
1153 }
TS_INTEROP_1(getDataFromEntry,KNativePointer,KNativePointer)1154 TS_INTEROP_1(getDataFromEntry, KNativePointer, KNativePointer)
1155 
1156 KNativePointer impl_getEntriesFromCompletionInfo(KNativePointer completionInfoPtr)
1157 {
1158     auto *completionInfo = reinterpret_cast<ark::es2panda::lsp::CompletionInfo *>(completionInfoPtr);
1159     std::vector<void *> ptrs;
1160     for (auto &el : completionInfo->GetEntries()) {
1161         ptrs.push_back(new ark::es2panda::lsp::CompletionEntry(el));
1162     }
1163     return new std::vector<void *>(ptrs);
1164 }
TS_INTEROP_1(getEntriesFromCompletionInfo,KNativePointer,KNativePointer)1165 TS_INTEROP_1(getEntriesFromCompletionInfo, KNativePointer, KNativePointer)
1166 
1167 KNativePointer impl_getUriFromLocation(KNativePointer locPtr)
1168 {
1169     auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1170     return new std::string(loc->uri);
1171 }
TS_INTEROP_1(getUriFromLocation,KNativePointer,KNativePointer)1172 TS_INTEROP_1(getUriFromLocation, KNativePointer, KNativePointer)
1173 
1174 KInt impl_getStartFromLocation(KNativePointer locPtr)
1175 {
1176     auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1177     return loc->start;
1178 }
TS_INTEROP_1(getStartFromLocation,KInt,KNativePointer)1179 TS_INTEROP_1(getStartFromLocation, KInt, KNativePointer)
1180 
1181 KInt impl_getEndFromLocation(KNativePointer locPtr)
1182 {
1183     auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1184     return loc->end;
1185 }
TS_INTEROP_1(getEndFromLocation,KInt,KNativePointer)1186 TS_INTEROP_1(getEndFromLocation, KInt, KNativePointer)
1187 
1188 KBoolean impl_getIsDefinitionFromLocation(KNativePointer locPtr)
1189 {
1190     auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1191     return static_cast<KBoolean>(loc->isDefinition);
1192 }
TS_INTEROP_1(getIsDefinitionFromLocation,KBoolean,KNativePointer)1193 TS_INTEROP_1(getIsDefinitionFromLocation, KBoolean, KNativePointer)
1194 
1195 KBoolean impl_getIsImportFromLocation(KNativePointer locPtr)
1196 {
1197     auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1198     return static_cast<KBoolean>(loc->isImport);
1199 }
TS_INTEROP_1(getIsImportFromLocation,KBoolean,KNativePointer)1200 TS_INTEROP_1(getIsImportFromLocation, KBoolean, KNativePointer)
1201 
1202 KInt impl_getAccessKindFromLocation(KNativePointer locPtr)
1203 {
1204     auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1205     return static_cast<size_t>(loc->accessKind);
1206 }
TS_INTEROP_1(getAccessKindFromLocation,KInt,KNativePointer)1207 TS_INTEROP_1(getAccessKindFromLocation, KInt, KNativePointer)
1208 
1209 KNativePointer impl_getLocationFromList(KNativePointer listPtr)
1210 {
1211     auto *list = reinterpret_cast<ReferenceLocationList *>(listPtr);
1212     std::vector<void *> ptrs;
1213     for (auto &el : list->referenceLocation) {
1214         ptrs.push_back(new ReferenceLocation(el));
1215     }
1216     return new std::vector<void *>(ptrs);
1217 }
TS_INTEROP_1(getLocationFromList,KNativePointer,KNativePointer)1218 TS_INTEROP_1(getLocationFromList, KNativePointer, KNativePointer)
1219 
1220 KBoolean impl_getSafeDeleteInfo(KNativePointer context, KInt position)
1221 {
1222     LSPAPI const *ctx = GetImpl();
1223     return static_cast<KBoolean>(ctx->getSafeDeleteInfo(reinterpret_cast<es2panda_Context *>(context), position));
1224 }
TS_INTEROP_2(getSafeDeleteInfo,KBoolean,KNativePointer,KInt)1225 TS_INTEROP_2(getSafeDeleteInfo, KBoolean, KNativePointer, KInt)
1226 
1227 KNativePointer impl_toLineColumnOffset(KNativePointer context, KInt position)
1228 {
1229     LSPAPI const *ctx = GetImpl();
1230     auto *ptrDiag = new ark::es2panda::lsp::LineAndCharacter(
1231         ctx->toLineColumnOffset(reinterpret_cast<es2panda_Context *>(context), position));
1232     return ptrDiag;
1233 }
TS_INTEROP_2(toLineColumnOffset,KNativePointer,KNativePointer,KInt)1234 TS_INTEROP_2(toLineColumnOffset, KNativePointer, KNativePointer, KInt)
1235 
1236 KInt impl_getLine(KNativePointer locPtr)
1237 {
1238     auto *loc = reinterpret_cast<ark::es2panda::lsp::LineAndCharacter *>(locPtr);
1239     return loc->GetLine();
1240 }
TS_INTEROP_1(getLine,KInt,KNativePointer)1241 TS_INTEROP_1(getLine, KInt, KNativePointer)
1242 
1243 KInt impl_getChar(KNativePointer locPtr)
1244 {
1245     auto *loc = reinterpret_cast<ark::es2panda::lsp::LineAndCharacter *>(locPtr);
1246     return loc->GetCharacter();
1247 }
TS_INTEROP_1(getChar,KInt,KNativePointer)1248 TS_INTEROP_1(getChar, KInt, KNativePointer)
1249 
1250 KNativePointer impl_getTypeHierarchies(KNativePointer searchContext, KNativePointer context, KInt position)
1251 {
1252     LSPAPI const *ctx = GetImpl();
1253     auto *info = new TypeHierarchiesInfo(ctx->getTypeHierarchies(reinterpret_cast<es2panda_Context *>(searchContext),
1254                                                                  reinterpret_cast<es2panda_Context *>(context),
1255                                                                  static_cast<std::size_t>(position)));
1256     return info;
1257 }
TS_INTEROP_3(getTypeHierarchies,KNativePointer,KNativePointer,KNativePointer,KInt)1258 TS_INTEROP_3(getTypeHierarchies, KNativePointer, KNativePointer, KNativePointer, KInt)
1259 
1260 KNativePointer impl_getFileNameFromTypeHierarchiesInfo(KNativePointer infoPtr)
1261 {
1262     auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1263     return new std::string(info->fileName);
1264 }
TS_INTEROP_1(getFileNameFromTypeHierarchiesInfo,KNativePointer,KNativePointer)1265 TS_INTEROP_1(getFileNameFromTypeHierarchiesInfo, KNativePointer, KNativePointer)
1266 
1267 KNativePointer impl_getNameFromTypeHierarchiesInfo(KNativePointer infoPtr)
1268 {
1269     auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1270     return new std::string(info->name);
1271 }
TS_INTEROP_1(getNameFromTypeHierarchiesInfo,KNativePointer,KNativePointer)1272 TS_INTEROP_1(getNameFromTypeHierarchiesInfo, KNativePointer, KNativePointer)
1273 
1274 KInt impl_getTypeFromTypeHierarchiesInfo(KNativePointer infoPtr)
1275 {
1276     auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1277     return static_cast<size_t>(info->type);
1278 }
TS_INTEROP_1(getTypeFromTypeHierarchiesInfo,KInt,KNativePointer)1279 TS_INTEROP_1(getTypeFromTypeHierarchiesInfo, KInt, KNativePointer)
1280 
1281 KInt impl_getPositionFromTypeHierarchiesInfo(KNativePointer infoPtr)
1282 {
1283     auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1284     return static_cast<size_t>(info->pos);
1285 }
TS_INTEROP_1(getPositionFromTypeHierarchiesInfo,KInt,KNativePointer)1286 TS_INTEROP_1(getPositionFromTypeHierarchiesInfo, KInt, KNativePointer)
1287 
1288 KNativePointer impl_getSuperFromTypeHierarchiesInfo(KNativePointer infoPtr)
1289 {
1290     auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1291     return new TypeHierarchies(info->superHierarchies);
1292 }
TS_INTEROP_1(getSuperFromTypeHierarchiesInfo,KNativePointer,KNativePointer)1293 TS_INTEROP_1(getSuperFromTypeHierarchiesInfo, KNativePointer, KNativePointer)
1294 
1295 KNativePointer impl_getSubFromTypeHierarchiesInfo(KNativePointer infoPtr)
1296 {
1297     auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1298     return new TypeHierarchies(info->subHierarchies);
1299 }
TS_INTEROP_1(getSubFromTypeHierarchiesInfo,KNativePointer,KNativePointer)1300 TS_INTEROP_1(getSubFromTypeHierarchiesInfo, KNativePointer, KNativePointer)
1301 
1302 KNativePointer impl_getFileNameFromTypeHierarchies(KNativePointer infoPtr)
1303 {
1304     auto *info = reinterpret_cast<TypeHierarchies *>(infoPtr);
1305     return new std::string(info->fileName);
1306 }
TS_INTEROP_1(getFileNameFromTypeHierarchies,KNativePointer,KNativePointer)1307 TS_INTEROP_1(getFileNameFromTypeHierarchies, KNativePointer, KNativePointer)
1308 
1309 KNativePointer impl_getNameFromTypeHierarchies(KNativePointer infoPtr)
1310 {
1311     auto *info = reinterpret_cast<TypeHierarchies *>(infoPtr);
1312     return new std::string(info->name);
1313 }
TS_INTEROP_1(getNameFromTypeHierarchies,KNativePointer,KNativePointer)1314 TS_INTEROP_1(getNameFromTypeHierarchies, KNativePointer, KNativePointer)
1315 
1316 KInt impl_getPosFromTypeHierarchies(KNativePointer infoPtr)
1317 {
1318     auto *info = reinterpret_cast<TypeHierarchies *>(infoPtr);
1319     return static_cast<size_t>(info->pos);
1320 }
TS_INTEROP_1(getPosFromTypeHierarchies,KInt,KNativePointer)1321 TS_INTEROP_1(getPosFromTypeHierarchies, KInt, KNativePointer)
1322 
1323 KNativePointer impl_getSubOrSuper(KNativePointer infoPtr)
1324 {
1325     auto *info = reinterpret_cast<TypeHierarchies *>(infoPtr);
1326     std::vector<void *> ptrs;
1327     for (auto &el : info->subOrSuper) {
1328         ptrs.push_back(new TypeHierarchies(el));
1329     }
1330     return new std::vector<void *>(ptrs);
1331 }
TS_INTEROP_1(getSubOrSuper,KNativePointer,KNativePointer)1332 TS_INTEROP_1(getSubOrSuper, KNativePointer, KNativePointer)
1333 
1334 KInt impl_getTypeFromTypeHierarchies(KNativePointer infoPtr)
1335 {
1336     auto *info = reinterpret_cast<TypeHierarchies *>(infoPtr);
1337     return static_cast<size_t>(info->type);
1338 }
TS_INTEROP_1(getTypeFromTypeHierarchies,KInt,KNativePointer)1339 TS_INTEROP_1(getTypeFromTypeHierarchies, KInt, KNativePointer)
1340 
1341 KNativePointer impl_getCodeFixesAtPosition(KNativePointer context, KInt startPosition, KInt endPosition,
1342                                            KInt *errorCodesPtr, KInt codeLength)
1343 {
1344     CodeFixOptions emptyOptions;
1345     std::vector<int> errorCodesInt;
1346     if (errorCodesPtr != nullptr && codeLength > 0) {
1347         // NOLINTBEGIN(cppcoreguidelines-pro-bounds-pointer-arithmetic,-warnings-as-errors)
1348         errorCodesInt = std::vector<int>(reinterpret_cast<int *>(errorCodesPtr),
1349                                          reinterpret_cast<int *>(errorCodesPtr) + codeLength);
1350         // NOLINTEND(cppcoreguidelines-pro-bounds-pointer-arithmetic,-warnings-as-errors)
1351     }
1352     LSPAPI const *ctx = GetImpl();
1353     auto autofix = ctx->getCodeFixesAtPosition(reinterpret_cast<es2panda_Context *>(context), startPosition,
1354                                                endPosition, errorCodesInt, emptyOptions);
1355     return new std::vector<CodeFixActionInfo>(autofix);
1356 }
TS_INTEROP_5(getCodeFixesAtPosition,KNativePointer,KNativePointer,KInt,KInt,KInt *,KInt)1357 TS_INTEROP_5(getCodeFixesAtPosition, KNativePointer, KNativePointer, KInt, KInt, KInt *, KInt)
1358 
1359 KNativePointer impl_getCodeFixActionInfos(KNativePointer codeFixActionInfoListPtr)
1360 {
1361     auto *getCodeFixActionInfoList = reinterpret_cast<CodeFixActionInfoList *>(codeFixActionInfoListPtr);
1362     std::vector<void *> ptrs;
1363     for (auto &el : getCodeFixActionInfoList->infos_) {
1364         ptrs.push_back(new CodeFixActionInfo(el));
1365     }
1366     return new std::vector<void *>(ptrs);
1367 }
TS_INTEROP_1(getCodeFixActionInfos,KNativePointer,KNativePointer)1368 TS_INTEROP_1(getCodeFixActionInfos, KNativePointer, KNativePointer)
1369 
1370 KNativePointer impl_getFileTextChangesFromCodeActionInfo(KNativePointer infoPtr)
1371 {
1372     auto *info = reinterpret_cast<CodeActionInfo *>(infoPtr);
1373     std::vector<void *> ptrs;
1374     for (auto &el : info->changes_) {
1375         ptrs.push_back(new FileTextChanges(el));
1376     }
1377     return new std::vector<void *>(ptrs);
1378 }
TS_INTEROP_1(getFileTextChangesFromCodeActionInfo,KNativePointer,KNativePointer)1379 TS_INTEROP_1(getFileTextChangesFromCodeActionInfo, KNativePointer, KNativePointer)
1380 
1381 KNativePointer impl_getDescriptionFromCodeActionInfo(KNativePointer infoPtr)
1382 {
1383     auto *info = reinterpret_cast<CodeActionInfo *>(infoPtr);
1384     return new std::string(info->description_);
1385 }
TS_INTEROP_1(getDescriptionFromCodeActionInfo,KNativePointer,KNativePointer)1386 TS_INTEROP_1(getDescriptionFromCodeActionInfo, KNativePointer, KNativePointer)
1387 
1388 KNativePointer impl_getFixNameFromCodeFixActionInfo(KNativePointer infoPtr)
1389 {
1390     auto *info = reinterpret_cast<CodeFixActionInfo *>(infoPtr);
1391     return new std::string(info->fixName_);
1392 }
TS_INTEROP_1(getFixNameFromCodeFixActionInfo,KNativePointer,KNativePointer)1393 TS_INTEROP_1(getFixNameFromCodeFixActionInfo, KNativePointer, KNativePointer)
1394 
1395 KNativePointer impl_getFixIdFromCodeFixActionInfo(KNativePointer infoPtr)
1396 {
1397     auto *info = reinterpret_cast<CodeFixActionInfo *>(infoPtr);
1398     return new std::string(info->fixId_);
1399 }
TS_INTEROP_1(getFixIdFromCodeFixActionInfo,KNativePointer,KNativePointer)1400 TS_INTEROP_1(getFixIdFromCodeFixActionInfo, KNativePointer, KNativePointer)
1401 
1402 KNativePointer impl_getFixAllDescriptionFromCodeFixActionInfo(KNativePointer infoPtr)
1403 {
1404     auto *info = reinterpret_cast<CodeFixActionInfo *>(infoPtr);
1405     return new std::string(info->fixAllDescription_);
1406 }
TS_INTEROP_1(getFixAllDescriptionFromCodeFixActionInfo,KNativePointer,KNativePointer)1407 TS_INTEROP_1(getFixAllDescriptionFromCodeFixActionInfo, KNativePointer, KNativePointer)
1408 
1409 KNativePointer impl_getSpanOfEnclosingComment(KNativePointer context, KInt position, KBoolean onlyMultiLine)
1410 {
1411     LSPAPI const *ctx = GetImpl();
1412     auto *textSpan = new TextSpan(
1413         ctx->getSpanOfEnclosingComment(reinterpret_cast<es2panda_Context *>(context), position, onlyMultiLine != 0));
1414     return textSpan;
1415 }
TS_INTEROP_3(getSpanOfEnclosingComment,KNativePointer,KNativePointer,KInt,KBoolean)1416 TS_INTEROP_3(getSpanOfEnclosingComment, KNativePointer, KNativePointer, KInt, KBoolean)
1417 
1418 KNativePointer impl_getInlayHintText(KNativePointer hintPtr)
1419 {
1420     auto *hint = reinterpret_cast<InlayHint *>(hintPtr);
1421     return &hint->text;
1422 }
TS_INTEROP_1(getInlayHintText,KNativePointer,KNativePointer)1423 TS_INTEROP_1(getInlayHintText, KNativePointer, KNativePointer)
1424 
1425 KInt impl_getInlayHintNumber(KNativePointer hintPtr)
1426 {
1427     auto *hint = reinterpret_cast<InlayHint *>(hintPtr);
1428     return hint->number;
1429 }
TS_INTEROP_1(getInlayHintNumber,KInt,KNativePointer)1430 TS_INTEROP_1(getInlayHintNumber, KInt, KNativePointer)
1431 
1432 KInt impl_getInlayHintKind(KNativePointer hintPtr)
1433 {
1434     auto *hint = reinterpret_cast<InlayHint *>(hintPtr);
1435     return static_cast<size_t>(hint->kind);
1436 }
TS_INTEROP_1(getInlayHintKind,KInt,KNativePointer)1437 TS_INTEROP_1(getInlayHintKind, KInt, KNativePointer)
1438 
1439 KBoolean impl_getInlayHintWhitespaceBefore(KNativePointer hintPtr)
1440 {
1441     auto *hint = reinterpret_cast<InlayHint *>(hintPtr);
1442     return hint->whitespaceBefore ? 1 : 0;
1443 }
TS_INTEROP_1(getInlayHintWhitespaceBefore,KBoolean,KNativePointer)1444 TS_INTEROP_1(getInlayHintWhitespaceBefore, KBoolean, KNativePointer)
1445 
1446 KBoolean impl_getInlayHintWhitespaceAfter(KNativePointer hintPtr)
1447 {
1448     auto *hint = reinterpret_cast<InlayHint *>(hintPtr);
1449     return hint->whitespaceAfter ? 1 : 0;
1450 }
TS_INTEROP_1(getInlayHintWhitespaceAfter,KBoolean,KNativePointer)1451 TS_INTEROP_1(getInlayHintWhitespaceAfter, KBoolean, KNativePointer)
1452 
1453 KNativePointer impl_getInlayHints(KNativePointer inlayHintListPtr)
1454 {
1455     auto *inlayHintList = reinterpret_cast<InlayHintList *>(inlayHintListPtr);
1456     std::vector<void *> ptrs;
1457     for (auto &el : inlayHintList->hints) {
1458         ptrs.push_back(new InlayHint(el));
1459     }
1460     return new std::vector<void *>(ptrs);
1461 }
TS_INTEROP_1(getInlayHints,KNativePointer,KNativePointer)1462 TS_INTEROP_1(getInlayHints, KNativePointer, KNativePointer)
1463 
1464 KNativePointer impl_getInlayHintList(KNativePointer context, KNativePointer span)
1465 {
1466     LSPAPI const *ctx = GetImpl();
1467     auto *inlayHints = new InlayHintList(
1468         ctx->provideInlayHints(reinterpret_cast<es2panda_Context *>(context), reinterpret_cast<TextSpan *>(span)));
1469     return inlayHints;
1470 }
TS_INTEROP_2(getInlayHintList,KNativePointer,KNativePointer,KNativePointer)1471 TS_INTEROP_2(getInlayHintList, KNativePointer, KNativePointer, KNativePointer)
1472 
1473 KNativePointer impl_getSignatureHelpParameterName(KNativePointer parameterPtr)
1474 {
1475     auto *parameterRef = reinterpret_cast<SignatureHelpParameter *>(parameterPtr);
1476     return &parameterRef->GetName();
1477 }
TS_INTEROP_1(getSignatureHelpParameterName,KNativePointer,KNativePointer)1478 TS_INTEROP_1(getSignatureHelpParameterName, KNativePointer, KNativePointer)
1479 
1480 KNativePointer impl_getSignatureHelpParameterDocumentation(KNativePointer parameterPtr)
1481 {
1482     auto *parameterRef = reinterpret_cast<SignatureHelpParameter *>(parameterPtr);
1483     std::vector<void *> ptrs;
1484     for (auto &el : parameterRef->GetDocumentation()) {
1485         ptrs.push_back(new SymbolDisplayPart(el));
1486     }
1487     return new std::vector<void *>(ptrs);
1488 }
TS_INTEROP_1(getSignatureHelpParameterDocumentation,KNativePointer,KNativePointer)1489 TS_INTEROP_1(getSignatureHelpParameterDocumentation, KNativePointer, KNativePointer)
1490 
1491 KNativePointer impl_getSignatureHelpParameterDisplayParts(KNativePointer parameterPtr)
1492 {
1493     auto *parameterRef = reinterpret_cast<SignatureHelpParameter *>(parameterPtr);
1494     std::vector<void *> ptrs;
1495     for (auto &el : parameterRef->GetDisplayParts()) {
1496         ptrs.push_back(new SymbolDisplayPart(el));
1497     }
1498     return new std::vector<void *>(ptrs);
1499 }
TS_INTEROP_1(getSignatureHelpParameterDisplayParts,KNativePointer,KNativePointer)1500 TS_INTEROP_1(getSignatureHelpParameterDisplayParts, KNativePointer, KNativePointer)
1501 
1502 KNativePointer impl_getSignatureHelpItemPrefix(KNativePointer itemPtr)
1503 {
1504     auto *itemRef = reinterpret_cast<SignatureHelpItem *>(itemPtr);
1505     std::vector<void *> ptrs;
1506     for (auto &el : itemRef->GetPrefixDisplayParts()) {
1507         ptrs.push_back(new SymbolDisplayPart(el));
1508     }
1509     return new std::vector<void *>(ptrs);
1510 }
TS_INTEROP_1(getSignatureHelpItemPrefix,KNativePointer,KNativePointer)1511 TS_INTEROP_1(getSignatureHelpItemPrefix, KNativePointer, KNativePointer)
1512 
1513 KNativePointer impl_getSignatureHelpItemSuffix(KNativePointer itemPtr)
1514 {
1515     auto *itemRef = reinterpret_cast<SignatureHelpItem *>(itemPtr);
1516     std::vector<void *> ptrs;
1517     for (auto &el : itemRef->GetSuffixDisplayParts()) {
1518         ptrs.push_back(new SymbolDisplayPart(el));
1519     }
1520     return new std::vector<void *>(ptrs);
1521 }
TS_INTEROP_1(getSignatureHelpItemSuffix,KNativePointer,KNativePointer)1522 TS_INTEROP_1(getSignatureHelpItemSuffix, KNativePointer, KNativePointer)
1523 
1524 KNativePointer impl_getSignatureHelpItemSeparator(KNativePointer itemPtr)
1525 {
1526     auto *itemRef = reinterpret_cast<SignatureHelpItem *>(itemPtr);
1527     std::vector<void *> ptrs;
1528     for (auto &el : itemRef->GetSeparatorDisplayParts()) {
1529         ptrs.push_back(new SymbolDisplayPart(el));
1530     }
1531     return new std::vector<void *>(ptrs);
1532 }
TS_INTEROP_1(getSignatureHelpItemSeparator,KNativePointer,KNativePointer)1533 TS_INTEROP_1(getSignatureHelpItemSeparator, KNativePointer, KNativePointer)
1534 
1535 KNativePointer impl_getSignatureHelpItemParameter(KNativePointer itemPtr)
1536 {
1537     auto *itemRef = reinterpret_cast<SignatureHelpItem *>(itemPtr);
1538     std::vector<void *> ptrs;
1539     for (auto &el : itemRef->GetParameters()) {
1540         ptrs.push_back(new SignatureHelpParameter(el));
1541     }
1542     return new std::vector<void *>(ptrs);
1543 }
TS_INTEROP_1(getSignatureHelpItemParameter,KNativePointer,KNativePointer)1544 TS_INTEROP_1(getSignatureHelpItemParameter, KNativePointer, KNativePointer)
1545 
1546 KNativePointer impl_getSignatureHelpItemDocumentation(KNativePointer itemPtr)
1547 {
1548     auto *itemRef = reinterpret_cast<SignatureHelpItem *>(itemPtr);
1549     std::vector<void *> ptrs;
1550     for (auto &el : itemRef->GetDocumentation()) {
1551         ptrs.push_back(new SymbolDisplayPart(el));
1552     }
1553     return new std::vector<void *>(ptrs);
1554 }
TS_INTEROP_1(getSignatureHelpItemDocumentation,KNativePointer,KNativePointer)1555 TS_INTEROP_1(getSignatureHelpItemDocumentation, KNativePointer, KNativePointer)
1556 
1557 KNativePointer impl_getSignatureHelpItem(KNativePointer itemsPtr)
1558 {
1559     auto *itemsRef = reinterpret_cast<SignatureHelpItems *>(itemsPtr);
1560     std::vector<void *> ptrs;
1561     for (auto &el : itemsRef->GetItems()) {
1562         ptrs.push_back(new SignatureHelpItem(el));
1563     }
1564     return new std::vector<void *>(ptrs);
1565 }
TS_INTEROP_1(getSignatureHelpItem,KNativePointer,KNativePointer)1566 TS_INTEROP_1(getSignatureHelpItem, KNativePointer, KNativePointer)
1567 
1568 KNativePointer impl_getApplicableSpan(KNativePointer itemsPtr)
1569 {
1570     auto *itemsRef = reinterpret_cast<SignatureHelpItems *>(itemsPtr);
1571     return new TextSpan(itemsRef->GetApplicableSpan());
1572 }
TS_INTEROP_1(getApplicableSpan,KNativePointer,KNativePointer)1573 TS_INTEROP_1(getApplicableSpan, KNativePointer, KNativePointer)
1574 
1575 KInt impl_getSelectedItemIndex(KNativePointer itemsPtr)
1576 {
1577     auto *itemsRef = reinterpret_cast<SignatureHelpItems *>(itemsPtr);
1578     return itemsRef->GetSelectedItemIndex();
1579 }
TS_INTEROP_1(getSelectedItemIndex,KInt,KNativePointer)1580 TS_INTEROP_1(getSelectedItemIndex, KInt, KNativePointer)
1581 
1582 KInt impl_getArgumentIndex(KNativePointer itemsPtr)
1583 {
1584     auto *itemsRef = reinterpret_cast<SignatureHelpItems *>(itemsPtr);
1585     return itemsRef->GetArgumentIndex();
1586 }
TS_INTEROP_1(getArgumentIndex,KInt,KNativePointer)1587 TS_INTEROP_1(getArgumentIndex, KInt, KNativePointer)
1588 
1589 KInt impl_getArgumentCount(KNativePointer itemsPtr)
1590 {
1591     auto *itemsRef = reinterpret_cast<SignatureHelpItems *>(itemsPtr);
1592     return itemsRef->GetArgumentCount();
1593 }
TS_INTEROP_1(getArgumentCount,KInt,KNativePointer)1594 TS_INTEROP_1(getArgumentCount, KInt, KNativePointer)
1595 
1596 KNativePointer impl_getSignatureHelpItems(KNativePointer context, KInt position)
1597 {
1598     LSPAPI const *ctx = GetImpl();
1599     auto *textSpan =
1600         new SignatureHelpItems(ctx->getSignatureHelpItems(reinterpret_cast<es2panda_Context *>(context), position));
1601     return textSpan;
1602 }
1603 TS_INTEROP_2(getSignatureHelpItems, KNativePointer, KNativePointer, KInt)