google / ksp

Kotlin Symbol Processing API
https://github.com/google/ksp
Apache License 2.0
2.84k stars 266 forks source link

Rewrite at slice VALUE_PARAMETER when calling findActualType() #18

Closed evant closed 4 years ago

evant commented 4 years ago

stacktrace:

e: java.lang.AssertionError: Rewrite at slice VALUE_PARAMETER key: VALUE_PARAMETER old value: val <no name provided>: kotlin.String defined in me.tatarka.inject.test in file InjectFunctionTest.kt[resolveParametersOfFunctionType$ParameterOfFunctionTypeDescriptor@6aa10edc]@1788939996 new value: val <no name provided>: kotlin.String defined in me.tatarka.inject.test in file InjectFunctionTest.kt[resolveParametersOfFunctionType$ParameterOfFunctionTypeDescriptor@11697eb4]@292126388
File name: InjectFunctionTest.kt Physical: true Injected: false
typealias foo = (<caret>String) -> String
        at org.jetbrains.kotlin.com.intellij.openapi.diagnostic.DefaultLogger.error(DefaultLogger.java:53)
        at org.jetbrains.kotlin.com.intellij.openapi.diagnostic.Logger.error(Logger.java:145)
        at org.jetbrains.kotlin.util.slicedMap.Slices.logErrorAboutRewritingNonEqualObjects(Slices.java:158)
        at org.jetbrains.kotlin.util.slicedMap.Slices.access$000(Slices.java:30)
        at org.jetbrains.kotlin.util.slicedMap.Slices$1.processRewrite(Slices.java:42)
        at org.jetbrains.kotlin.util.slicedMap.SlicedMapImpl.put(SlicedMapImpl.java:65)
        at org.jetbrains.kotlin.resolve.BindingTraceContext.record(BindingTraceContext.java:135)
        at org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace.record(CliTrace.kt:52)
        at org.jetbrains.kotlin.resolve.TypeResolver$resolveTypeElement$1.resolveParametersOfFunctionType(TypeResolver.kt:358)
        at org.jetbrains.kotlin.resolve.TypeResolver$resolveTypeElement$1.visitFunctionType(TypeResolver.kt:286)
        at org.jetbrains.kotlin.psi.KtVisitorVoid.visitFunctionType(KtVisitorVoid.java:941)
        at org.jetbrains.kotlin.psi.KtVisitorVoid.visitFunctionType(KtVisitorVoid.java:21)
        at org.jetbrains.kotlin.psi.KtFunctionType.accept(KtFunctionType.java:64)
        at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:59)
        at org.jetbrains.kotlin.resolve.TypeResolver.resolveTypeElement(TypeResolver.kt:245)
        at org.jetbrains.kotlin.resolve.TypeResolver.resolvePossiblyBareType(TypeResolver.kt:124)
        at org.jetbrains.kotlin.resolve.TypeResolver.resolveType(TypeResolver.kt:114)
        at org.jetbrains.kotlin.resolve.TypeResolver.resolveType(TypeResolver.kt:85)
        at org.jetbrains.kotlin.ksp.processing.impl.ResolverImpl.resolveUserType(ResolverImpl.kt:274)
        at org.jetbrains.kotlin.ksp.symbol.impl.kotlin.KSTypeReferenceImpl.resolve(KSTypeReferenceImpl.kt:51)
        at org.jetbrains.kotlin.ksp.UtilsKt.findActualType(utils.kt:56)
        at me.tatarka.inject.compiler.ksp.KSAstType.toAstClass(KSAst.kt:347)
        at me.tatarka.inject.compiler.TypeCollector.resolve(TypeCollector.kt:185)
        at me.tatarka.inject.compiler.InjectGenerator.find(InjectGenerator.kt:419)
        at me.tatarka.inject.compiler.InjectGenerator.findWithIndex(InjectGenerator.kt:415)
        at me.tatarka.inject.compiler.InjectGenerator.access$findWithIndex(InjectGenerator.kt:11)
        at me.tatarka.inject.compiler.InjectGenerator$provideNamedFunction$1$$special$$inlined$apply$lambda$1.invoke(InjectGenerator.kt:388)
        at me.tatarka.inject.compiler.InjectGenerator$provideNamedFunction$1$$special$$inlined$apply$lambda$1.invoke(InjectGenerator.kt:11)
        at me.tatarka.inject.compiler.InjectGenerator.provide(InjectGenerator.kt:221)
        at me.tatarka.inject.compiler.InjectGenerator.provide$default(InjectGenerator.kt:219)
        at me.tatarka.inject.compiler.InjectGenerator$provideNamedFunction$1.invoke(InjectGenerator.kt:388)
        at me.tatarka.inject.compiler.InjectGenerator$provideNamedFunction$1.invoke(InjectGenerator.kt:11)
        at me.tatarka.inject.compiler.InjectGenerator$Context.use(InjectGenerator.kt:492)
        at me.tatarka.inject.compiler.InjectGenerator.provideNamedFunction(InjectGenerator.kt:364)
        at me.tatarka.inject.compiler.InjectGenerator.provide(InjectGenerator.kt:232)
        at me.tatarka.inject.compiler.InjectGenerator.provide$default(InjectGenerator.kt:219)
        at me.tatarka.inject.compiler.InjectGenerator$generateInjectComponent$$inlined$apply$lambda$1.invoke(InjectGenerator.kt:101)
        at me.tatarka.inject.compiler.InjectGenerator$generateInjectComponent$$inlined$apply$lambda$1.invoke(InjectGenerator.kt:11)
        at me.tatarka.inject.compiler.AstClass.visitInheritanceChain(Ast.kt:64)
        at me.tatarka.inject.compiler.InjectGenerator.generateInjectComponent(InjectGenerator.kt:94)
        at me.tatarka.inject.compiler.InjectGenerator.generate(InjectGenerator.kt:25)
        at me.tatarka.inject.compiler.ksp.InjectProcessor.process(InjectProcessor.kt:46)
        at org.jetbrains.kotlin.ksp.AbstractKotlinSymbolProcessingExtension.doAnalysis(KotlinSymbolProcessingExtension.kt:83)
        at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:116)
        at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:93)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:526)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:90)
        at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:115)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:517)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:185)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:164)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:51)
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:86)
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
        at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1549)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
        at sun.rmi.transport.Transport$1.run(Transport.java:200)
        at sun.rmi.transport.Transport$1.run(Transport.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.Throwable: Rewrite at slice VALUE_PARAMETER key: VALUE_PARAMETER old value: val <no name provided>: kotlin.String defined in me.tatarka.inject.test in file InjectFunctionTest.kt[resolveParametersOfFunctionType$ParameterOfFunctionTypeDescriptor@6aa10edc]@1788939996 new value: val <no name provided>: kotlin.String defined in me.tatarka.inject.test in file InjectFunctionTest.kt[resolveParametersOfFunctionType$ParameterOfFunctionTypeDescriptor@11697eb4]@292126388
File name: InjectFunctionTest.kt Physical: true Injected: false
typealias foo = (<caret>String) -> String
        ... 72 more

haven't tried to narrow it down yet, but can reproduce on https://github.com/evant/kotlin-inject/tree/issue/rewrite-at-slice when running ./gradlew :integration-tests-ksp:compileTestKotlin

ting-yuan commented 4 years ago

Fixed in android/kotlin-for-ksp#96