Ben Dodson
06/24/2021, 4:31 PMprivate typealias
, and then use that alias in a public method. This seems to work in Gradle, but not in our Bazel setup. My main question is, is this valid code and a bug in our Bazel setup, or should we not expose a private typealias in a public api?Ben Dodson
06/24/2021, 4:31 PMBen Dodson
06/24/2021, 4:31 PMio.bazel.kotlin.builder.toolchain.CompilationStatusException: compile phase failed:
exception: org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during IR lowering
File being compiled: /Users/bdodson/Snapchat/Dev/.cache/_bazel_root/abfadcbfe16e7919f681fe368583894f/execroot/__main__/components/lenses/analytics-core/src/test/java/com/snap/lenses/analytics/blizzard/BlizzardLensResourcesAnalyticsReporterTest.kt
The root cause java.lang.AssertionError was thrown at: org.jetbrains.kotlin.ir.util.TypeTranslator.toIrTypeAbbreviation(TypeTranslator.kt:167)
at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException(CodegenUtil.kt:239)
at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException$default(CodegenUtil.kt:235)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(PhaseBuilders.kt:124)
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(PhaseBuilders.kt:112)
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:94)
at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:30)
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:94)
at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:41)
at org.jetbrains.kotlin.backend.jvm.JvmLower.lower(JvmLower.kt:407)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.doGenerateFilesInternal(JvmIrCodegenFactory.kt:191)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.generateModule(JvmIrCodegenFactory.kt:62)
at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:35)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.generate(KotlinToJVMBytecodeCompiler.kt:592)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:212)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:155)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:169)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
at io.bazel.kotlin.compiler.BazelK2JVMCompiler.exec(BazelK2JVMCompiler.kt:30)
at jdk.internal.reflect.GeneratedMethodAccessor95.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at io.bazel.kotlin.builder.toolchain.KotlinToolchain$KotlinCliToolInvoker.compile(KotlinToolchain.kt:185)
at io.bazel.kotlin.builder.tasks.jvm.Compilation_taskKt$compileKotlin$1$2.invoke(compilation_task.kt:302)
at io.bazel.kotlin.builder.tasks.jvm.Compilation_taskKt$compileKotlin$1$2.invoke(compilation_task.kt)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.executeCompilerTask(CompilationTaskContext.kt:122)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.executeCompilerTask$default(CompilationTaskContext.kt:118)
at io.bazel.kotlin.builder.tasks.jvm.Compilation_taskKt.compileKotlin(compilation_task.kt:302)
at io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor$execute$1$$special$$inlined$apply$lambda$1.invoke(KotlinJvmTaskExecutor.kt:62)
at io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor$execute$1$$special$$inlined$apply$lambda$1.invoke(KotlinJvmTaskExecutor.kt:33)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.execute(CompilationTaskContext.kt:148)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.execute(CompilationTaskContext.kt:140)
at io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor$execute$1.invoke(KotlinJvmTaskExecutor.kt:60)
at io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor$execute$1.invoke(KotlinJvmTaskExecutor.kt:33)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.execute(CompilationTaskContext.kt:148)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.execute(CompilationTaskContext.kt:140)
at io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor.execute(KotlinJvmTaskExecutor.kt:56)
at io.bazel.kotlin.builder.tasks.KotlinBuilder.executeJvmTask(KotlinBuilder.kt:233)
at io.bazel.kotlin.builder.tasks.KotlinBuilder.build(KotlinBuilder.kt:131)
at io.bazel.kotlin.builder.tasks.CompileKotlin.invoke(CompileKotlin.kt:27)
at io.bazel.worker.PersistentWorker$compileWork$2$result$1.invoke(PersistentWorker.kt:98)
at io.bazel.worker.PersistentWorker$compileWork$2$result$1.invoke(PersistentWorker.kt:56)
at io.bazel.worker.WorkerContext$TaskContext.resultOf(WorkerContext.kt:125)
at io.bazel.worker.WorkerContext.doTask(WorkerContext.kt:153)
at io.bazel.worker.PersistentWorker$compileWork$2.invokeSuspend(PersistentWorker.kt:96)
at io.bazel.worker.PersistentWorker$compileWork$2.invoke(PersistentWorker.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
at io.bazel.worker.PersistentWorker.compileWork(PersistentWorker.kt:95)
at io.bazel.worker.PersistentWorker$start$1$$special$$inlined$use$lambda$1$1$2.invokeSuspend(PersistentWorker.kt:75)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.AssertionError: TypeAliasDescriptor expected: class AsyncEventLogger (not found)
at org.jetbrains.kotlin.ir.util.TypeTranslator.toIrTypeAbbreviation(TypeTranslator.kt:167)
at org.jetbrains.kotlin.ir.util.TypeTranslator.translateType(TypeTranslator.kt:115)
at org.jetbrains.kotlin.ir.util.TypeTranslator.translateType(TypeTranslator.kt:84)
at org.jetbrains.kotlin.ir.util.DeclarationStubGenerator.toIrType(DeclarationStubGenerator.kt:244)
at org.jetbrains.kotlin.ir.util.DeclarationStubGenerator.generateValueParameterStub$ir_tree(DeclarationStubGenerator.kt:248)
at org.jetbrains.kotlin.ir.declarations.lazy.IrLazyFunctionBase$createValueParameters$1.invoke(IrLazyFunctionBase.kt:32)
at org.jetbrains.kotlin.ir.declarations.lazy.IrLazyFunctionBase$createValueParameters$1.invoke(IrLazyFunctionBase.kt:29)
at org.jetbrains.kotlin.ir.declarations.lazy.UnsafeLazyVar$value$1.invoke(lazyUtil.kt:22)
at org.jetbrains.kotlin.ir.declarations.lazy.UnsafeLazyVar$value$1.invoke(lazyUtil.kt:22)
at org.jetbrains.kotlin.ir.declarations.StageController.withInitialIr(PersistentApi.kt:25)
at org.jetbrains.kotlin.ir.declarations.lazy.UnsafeLazyVar.getValue(lazyUtil.kt:40)
at org.jetbrains.kotlin.ir.declarations.lazy.UnsafeLazyVar.getValue(lazyUtil.kt:32)
at org.jetbrains.kotlin.ir.declarations.lazy.IrLazyConstructor.getValueParameters(IrLazyConstructor.kt:53)
at org.jetbrains.kotlin.backend.jvm.codegen.IrInlineCodegenKt.isInlineArrayConstructor(IrInlineCodegen.kt:273)
at org.jetbrains.kotlin.backend.jvm.codegen.IrInlineCodegenKt.isInlineFunctionCall(IrInlineCodegen.kt:269)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitFunctionAccess(IrInlineReferenceLocator.kt:31)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitFunctionAccess(IrInlineReferenceLocator.kt:19)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitConstructorCall(IrElementVisitor.kt:78)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitConstructorCall(IrInlineReferenceLocator.kt:19)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitConstructorCall(IrInlineReferenceLocator.kt:19)
at org.jetbrains.kotlin.ir.expressions.impl.IrConstructorCallImpl.accept(IrConstructorCallImpl.kt:28)
at org.jetbrains.kotlin.ir.expressions.IrExpressionBody.acceptChildren(IrBody.kt:42)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitElement(IrInlineReferenceLocator.kt:21)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitElement(IrInlineReferenceLocator.kt:19)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitBody(IrElementVisitor.kt:46)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitBody(IrInlineReferenceLocator.kt:19)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitBody(IrInlineReferenceLocator.kt:19)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitExpressionBody(IrElementVisitor.kt:47)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitExpressionBody(IrInlineReferenceLocator.kt:19)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitExpressionBody(IrInlineReferenceLocator.kt:19)
at org.jetbrains.kotlin.ir.expressions.IrExpressionBody.accept(IrBody.kt:36)
at org.jetbrains.kotlin.ir.declarations.IrField.acceptChildren(IrField.kt:38)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitDeclaration(IrInlineReferenceLocator.kt:26)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitDeclaration(IrInlineReferenceLocator.kt:19)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitField(IrElementVisitor.kt:37)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitField(IrInlineReferenceLocator.kt:19)
at org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator.visitField(IrInlineReferenceLocator.kt:19)
at org.jetbrains.kotlin.ir.declarations.IrField.accept(IrField.kt:35)
...
Ben Dodson
06/24/2021, 4:32 PMinternal class BlizzardLensResourcesAnalyticsReporter(
private val logger: AsyncEventLogger
) : LensResourcesAnalyticsReporter {
...
}
private typealias AsyncEventLogger = (() -> EventBase) -> Unit
and test, which fails to compile:
private val logger = mock<(() -> EventBase) -> Unit> {
on { invoke(any()) } doReturn Unit
}
private val subject = BlizzardLensResourcesAnalyticsReporter(logger)
rnett
06/24/2021, 8:55 PMrnett
06/24/2021, 8:56 PMrnett
06/24/2021, 8:59 PMBen Dodson
06/24/2021, 9:04 PMgildor
06/25/2021, 3:14 AMBen Dodson
06/25/2021, 4:18 PMBen Dodson
06/25/2021, 4:19 PM