Make interop callback types more precise
This commit is contained in:
committed by
SvyatoslavScherbina
parent
c0b40ffedb
commit
8b148fd35c
@@ -4707,37 +4707,37 @@ class IndexerCallbacks(override val rawPtr: NativePtr) : CStructVar() {
|
|||||||
|
|
||||||
companion object : Type(64, 8)
|
companion object : Type(64, 8)
|
||||||
|
|
||||||
var abortQuery: CPointer<CFunction<(COpaquePointer?, COpaquePointer?) -> Int>>?
|
var abortQuery: CPointer<CFunction<(CXClientData?, COpaquePointer?) -> Int>>?
|
||||||
get() = memberAt<CPointerVar<CFunction<(COpaquePointer?, COpaquePointer?) -> Int>>>(0).value
|
get() = memberAt<CPointerVar<CFunction<(CXClientData?, COpaquePointer?) -> Int>>>(0).value
|
||||||
set(value) { memberAt<CPointerVar<CFunction<(COpaquePointer?, COpaquePointer?) -> Int>>>(0).value = value }
|
set(value) { memberAt<CPointerVar<CFunction<(CXClientData?, COpaquePointer?) -> Int>>>(0).value = value }
|
||||||
|
|
||||||
var diagnostic: CPointer<CFunction<(COpaquePointer?, COpaquePointer?, COpaquePointer?) -> Unit>>?
|
var diagnostic: CPointer<CFunction<(CXClientData?, CXDiagnosticSet?, COpaquePointer?) -> Unit>>?
|
||||||
get() = memberAt<CPointerVar<CFunction<(COpaquePointer?, COpaquePointer?, COpaquePointer?) -> Unit>>>(8).value
|
get() = memberAt<CPointerVar<CFunction<(CXClientData?, CXDiagnosticSet?, COpaquePointer?) -> Unit>>>(8).value
|
||||||
set(value) { memberAt<CPointerVar<CFunction<(COpaquePointer?, COpaquePointer?, COpaquePointer?) -> Unit>>>(8).value = value }
|
set(value) { memberAt<CPointerVar<CFunction<(CXClientData?, CXDiagnosticSet?, COpaquePointer?) -> Unit>>>(8).value = value }
|
||||||
|
|
||||||
var enteredMainFile: CPointer<CFunction<(COpaquePointer?, COpaquePointer?, COpaquePointer?) -> COpaquePointer?>>?
|
var enteredMainFile: CPointer<CFunction<(CXClientData?, CXFile?, COpaquePointer?) -> CXIdxClientFile?>>?
|
||||||
get() = memberAt<CPointerVar<CFunction<(COpaquePointer?, COpaquePointer?, COpaquePointer?) -> COpaquePointer?>>>(16).value
|
get() = memberAt<CPointerVar<CFunction<(CXClientData?, CXFile?, COpaquePointer?) -> CXIdxClientFile?>>>(16).value
|
||||||
set(value) { memberAt<CPointerVar<CFunction<(COpaquePointer?, COpaquePointer?, COpaquePointer?) -> COpaquePointer?>>>(16).value = value }
|
set(value) { memberAt<CPointerVar<CFunction<(CXClientData?, CXFile?, COpaquePointer?) -> CXIdxClientFile?>>>(16).value = value }
|
||||||
|
|
||||||
var ppIncludedFile: CPointer<CFunction<(COpaquePointer?, CPointer<CXIdxIncludedFileInfo>?) -> COpaquePointer?>>?
|
var ppIncludedFile: CPointer<CFunction<(CXClientData?, CPointer<CXIdxIncludedFileInfo>?) -> CXIdxClientFile?>>?
|
||||||
get() = memberAt<CPointerVar<CFunction<(COpaquePointer?, CPointer<CXIdxIncludedFileInfo>?) -> COpaquePointer?>>>(24).value
|
get() = memberAt<CPointerVar<CFunction<(CXClientData?, CPointer<CXIdxIncludedFileInfo>?) -> CXIdxClientFile?>>>(24).value
|
||||||
set(value) { memberAt<CPointerVar<CFunction<(COpaquePointer?, CPointer<CXIdxIncludedFileInfo>?) -> COpaquePointer?>>>(24).value = value }
|
set(value) { memberAt<CPointerVar<CFunction<(CXClientData?, CPointer<CXIdxIncludedFileInfo>?) -> CXIdxClientFile?>>>(24).value = value }
|
||||||
|
|
||||||
var importedASTFile: CPointer<CFunction<(COpaquePointer?, CPointer<CXIdxImportedASTFileInfo>?) -> COpaquePointer?>>?
|
var importedASTFile: CPointer<CFunction<(CXClientData?, CPointer<CXIdxImportedASTFileInfo>?) -> CXIdxClientASTFile?>>?
|
||||||
get() = memberAt<CPointerVar<CFunction<(COpaquePointer?, CPointer<CXIdxImportedASTFileInfo>?) -> COpaquePointer?>>>(32).value
|
get() = memberAt<CPointerVar<CFunction<(CXClientData?, CPointer<CXIdxImportedASTFileInfo>?) -> CXIdxClientASTFile?>>>(32).value
|
||||||
set(value) { memberAt<CPointerVar<CFunction<(COpaquePointer?, CPointer<CXIdxImportedASTFileInfo>?) -> COpaquePointer?>>>(32).value = value }
|
set(value) { memberAt<CPointerVar<CFunction<(CXClientData?, CPointer<CXIdxImportedASTFileInfo>?) -> CXIdxClientASTFile?>>>(32).value = value }
|
||||||
|
|
||||||
var startedTranslationUnit: CPointer<CFunction<(COpaquePointer?, COpaquePointer?) -> COpaquePointer?>>?
|
var startedTranslationUnit: CPointer<CFunction<(CXClientData?, COpaquePointer?) -> CXIdxClientContainer?>>?
|
||||||
get() = memberAt<CPointerVar<CFunction<(COpaquePointer?, COpaquePointer?) -> COpaquePointer?>>>(40).value
|
get() = memberAt<CPointerVar<CFunction<(CXClientData?, COpaquePointer?) -> CXIdxClientContainer?>>>(40).value
|
||||||
set(value) { memberAt<CPointerVar<CFunction<(COpaquePointer?, COpaquePointer?) -> COpaquePointer?>>>(40).value = value }
|
set(value) { memberAt<CPointerVar<CFunction<(CXClientData?, COpaquePointer?) -> CXIdxClientContainer?>>>(40).value = value }
|
||||||
|
|
||||||
var indexDeclaration: CPointer<CFunction<(COpaquePointer?, CPointer<CXIdxDeclInfo>?) -> Unit>>?
|
var indexDeclaration: CPointer<CFunction<(CXClientData?, CPointer<CXIdxDeclInfo>?) -> Unit>>?
|
||||||
get() = memberAt<CPointerVar<CFunction<(COpaquePointer?, CPointer<CXIdxDeclInfo>?) -> Unit>>>(48).value
|
get() = memberAt<CPointerVar<CFunction<(CXClientData?, CPointer<CXIdxDeclInfo>?) -> Unit>>>(48).value
|
||||||
set(value) { memberAt<CPointerVar<CFunction<(COpaquePointer?, CPointer<CXIdxDeclInfo>?) -> Unit>>>(48).value = value }
|
set(value) { memberAt<CPointerVar<CFunction<(CXClientData?, CPointer<CXIdxDeclInfo>?) -> Unit>>>(48).value = value }
|
||||||
|
|
||||||
var indexEntityReference: CPointer<CFunction<(COpaquePointer?, CPointer<CXIdxEntityRefInfo>?) -> Unit>>?
|
var indexEntityReference: CPointer<CFunction<(CXClientData?, CPointer<CXIdxEntityRefInfo>?) -> Unit>>?
|
||||||
get() = memberAt<CPointerVar<CFunction<(COpaquePointer?, CPointer<CXIdxEntityRefInfo>?) -> Unit>>>(56).value
|
get() = memberAt<CPointerVar<CFunction<(CXClientData?, CPointer<CXIdxEntityRefInfo>?) -> Unit>>>(56).value
|
||||||
set(value) { memberAt<CPointerVar<CFunction<(COpaquePointer?, CPointer<CXIdxEntityRefInfo>?) -> Unit>>>(56).value = value }
|
set(value) { memberAt<CPointerVar<CFunction<(CXClientData?, CPointer<CXIdxEntityRefInfo>?) -> Unit>>>(56).value = value }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5891,7 +5891,7 @@ typealias CXCursorSetVar = CPointerVarOf<CXCursorSet>
|
|||||||
typealias CXCursorSet = CPointer<CXCursorSetImpl>
|
typealias CXCursorSet = CPointer<CXCursorSetImpl>
|
||||||
|
|
||||||
typealias CXCursorVisitorVar = CPointerVarOf<CXCursorVisitor>
|
typealias CXCursorVisitorVar = CPointerVarOf<CXCursorVisitor>
|
||||||
typealias CXCursorVisitor = CPointer<CFunction<(CValue<CXCursor>, CValue<CXCursor>, COpaquePointer?) -> CXChildVisitResult>>
|
typealias CXCursorVisitor = CPointer<CFunction<(CValue<CXCursor>, CValue<CXCursor>, CXClientData?) -> CXChildVisitResult>>
|
||||||
|
|
||||||
typealias CXModuleVar = CPointerVarOf<CXModule>
|
typealias CXModuleVar = CPointerVarOf<CXModule>
|
||||||
typealias CXModule = COpaquePointer
|
typealias CXModule = COpaquePointer
|
||||||
@@ -5900,7 +5900,7 @@ typealias CXCompletionStringVar = CPointerVarOf<CXCompletionString>
|
|||||||
typealias CXCompletionString = COpaquePointer
|
typealias CXCompletionString = COpaquePointer
|
||||||
|
|
||||||
typealias CXInclusionVisitorVar = CPointerVarOf<CXInclusionVisitor>
|
typealias CXInclusionVisitorVar = CPointerVarOf<CXInclusionVisitor>
|
||||||
typealias CXInclusionVisitor = CPointer<CFunction<(COpaquePointer?, CPointer<CXSourceLocation>?, Int, COpaquePointer?) -> Unit>>
|
typealias CXInclusionVisitor = CPointer<CFunction<(CXFile?, CPointer<CXSourceLocation>?, Int, CXClientData?) -> Unit>>
|
||||||
|
|
||||||
typealias CXEvalResultVar = CPointerVarOf<CXEvalResult>
|
typealias CXEvalResultVar = CPointerVarOf<CXEvalResult>
|
||||||
typealias CXEvalResult = COpaquePointer
|
typealias CXEvalResult = COpaquePointer
|
||||||
@@ -5924,6 +5924,6 @@ typealias CXIndexActionVar = CPointerVarOf<CXIndexAction>
|
|||||||
typealias CXIndexAction = COpaquePointer
|
typealias CXIndexAction = COpaquePointer
|
||||||
|
|
||||||
typealias CXFieldVisitorVar = CPointerVarOf<CXFieldVisitor>
|
typealias CXFieldVisitorVar = CPointerVarOf<CXFieldVisitor>
|
||||||
typealias CXFieldVisitor = CPointer<CFunction<(CValue<CXCursor>, COpaquePointer?) -> CXVisitorResult>>
|
typealias CXFieldVisitor = CPointer<CFunction<(CValue<CXCursor>, CXClientData?) -> CXVisitorResult>>
|
||||||
|
|
||||||
private val loadLibrary = System.loadLibrary("clangstubs")
|
private val loadLibrary = System.loadLibrary("clangstubs")
|
||||||
|
|||||||
+25
-14
@@ -234,11 +234,15 @@ internal class NativeIndexImpl(val library: NativeLibrary) : NativeIndex() {
|
|||||||
CXType_Elaborated -> convertType(clang_Type_getNamedType(type))
|
CXType_Elaborated -> convertType(clang_Type_getNamedType(type))
|
||||||
|
|
||||||
CXType_Unexposed -> {
|
CXType_Unexposed -> {
|
||||||
val canonicalType = clang_getCanonicalType(type)
|
if (clang_getResultType(type).kind != CXTypeKind.CXType_Invalid) {
|
||||||
if (canonicalType.kind != CXType_Unexposed) {
|
convertFunctionType(type)
|
||||||
convertType(canonicalType)
|
|
||||||
} else {
|
} else {
|
||||||
throw NotImplementedError()
|
val canonicalType = clang_getCanonicalType(type)
|
||||||
|
if (canonicalType.kind != CXType_Unexposed) {
|
||||||
|
convertType(canonicalType)
|
||||||
|
} else {
|
||||||
|
throw NotImplementedError()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,22 +273,29 @@ internal class NativeIndexImpl(val library: NativeLibrary) : NativeIndex() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CXType_FunctionProto -> {
|
CXType_FunctionProto -> {
|
||||||
if (clang_isFunctionTypeVariadic(type) != 0) {
|
convertFunctionType(type)
|
||||||
UnsupportedType
|
|
||||||
} else {
|
|
||||||
val returnType = convertType(clang_getResultType(type))
|
|
||||||
val numArgs = clang_getNumArgTypes(type)
|
|
||||||
val paramTypes = (0..numArgs - 1).map {
|
|
||||||
convertType(clang_getArgType(type, it))
|
|
||||||
}
|
|
||||||
FunctionType(paramTypes, returnType)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> UnsupportedType
|
else -> UnsupportedType
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun convertFunctionType(type: CValue<CXType>): Type {
|
||||||
|
val kind = type.kind
|
||||||
|
assert (kind == CXType_Unexposed || kind == CXType_FunctionProto)
|
||||||
|
|
||||||
|
return if (clang_isFunctionTypeVariadic(type) != 0) {
|
||||||
|
UnsupportedType
|
||||||
|
} else {
|
||||||
|
val returnType = convertType(clang_getResultType(type))
|
||||||
|
val numArgs = clang_getNumArgTypes(type)
|
||||||
|
val paramTypes = (0..numArgs - 1).map {
|
||||||
|
convertType(clang_getArgType(type, it))
|
||||||
|
}
|
||||||
|
FunctionType(paramTypes, returnType)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun indexDeclaration(info: CXIdxDeclInfo): Unit {
|
fun indexDeclaration(info: CXIdxDeclInfo): Unit {
|
||||||
val cursor = info.cursor.readValue()
|
val cursor = info.cursor.readValue()
|
||||||
val entityInfo = info.entityInfo!!.pointed
|
val entityInfo = info.entityInfo!!.pointed
|
||||||
|
|||||||
Reference in New Issue
Block a user