kotlin-electron/karakum/src/jsMain/kotlin/electron/karakum/injections/BrowserEventInjection.kt [124:168]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - val interfaceNode = ensureNotNull(method.getParentOrNull()) ensure(isInterfaceDeclaration(interfaceNode)) method } ) val listener = ensureNotNull(method.parameters.asArray().getOrNull(1)) val listenerType = ensureNotNull(listener.type) nullable { ensure(isFunctionTypeNode(listenerType)) listenerType.parameters.asArray() } ?: nullable { ensure(isTypeReferenceNode(listenerType)) nullable { val listenerTypeName = listenerType.typeName ensure(isIdentifier(listenerTypeName)) ensure(listenerTypeName.text == "Function") emptyArray() } ?: nullable { val typeScriptService = ensureNotNull(context.lookupService(typeScriptServiceKey)) val typeChecker = typeScriptService.program.getTypeChecker() val symbol = ensureNotNull(typeChecker.getSymbolAtLocation(listenerType.typeName)) val declaration = ensureNotNull(symbol.declarations?.firstOrNull()) ensure(isTypeAliasDeclaration(declaration)) val declarationType = declaration.type ensure(isFunctionTypeNode(declarationType)) declarationType.parameters.asArray() } } ?: run { val typeScriptService = ensureNotNull(context.lookupService(typeScriptServiceKey)) console.error("Suspicious listener: ${typeScriptService.printNode(listener)}") null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - kotlin-electron/karakum/src/jsMain/kotlin/electron/karakum/injections/EventInjection.kt [196:240]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - val interfaceNode = ensureNotNull(method.getParentOrNull()) ensure(isInterfaceDeclaration(interfaceNode)) method } ) val listener = ensureNotNull(method.parameters.asArray().getOrNull(1)) val listenerType = ensureNotNull(listener.type) nullable { ensure(isFunctionTypeNode(listenerType)) listenerType.parameters.asArray() } ?: nullable { ensure(isTypeReferenceNode(listenerType)) nullable { val listenerTypeName = listenerType.typeName ensure(isIdentifier(listenerTypeName)) ensure(listenerTypeName.text == "Function") emptyArray() } ?: nullable { val typeScriptService = ensureNotNull(context.lookupService(typeScriptServiceKey)) val typeChecker = typeScriptService.program.getTypeChecker() val symbol = ensureNotNull(typeChecker.getSymbolAtLocation(listenerType.typeName)) val declaration = ensureNotNull(symbol.declarations?.firstOrNull()) ensure(isTypeAliasDeclaration(declaration)) val declarationType = declaration.type ensure(isFunctionTypeNode(declarationType)) declarationType.parameters.asArray() } } ?: run { val typeScriptService = ensureNotNull(context.lookupService(typeScriptServiceKey)) console.error("Suspicious listener: ${typeScriptService.printNode(listener)}") null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -