[FIR] Handle more cases of implicit types in FirNoImplicitTypesHandler
This commit is contained in:
+23
-1
@@ -6,8 +6,12 @@
|
||||
package org.jetbrains.kotlin.test.frontend.fir.handlers
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.expressions.FirLoop
|
||||
import org.jetbrains.kotlin.fir.expressions.FirLoopJump
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.types.FirErrorTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor
|
||||
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
|
||||
import org.jetbrains.kotlin.test.model.TestModule
|
||||
@@ -38,12 +42,30 @@ class FirNoImplicitTypesHandler(testServices: TestServices) : FirAnalysisHandler
|
||||
}
|
||||
|
||||
private inner class Visitor : FirDefaultVisitor<Unit, FirElement>() {
|
||||
val detectedImplicitTypesParents = mutableListOf<FirElement>()
|
||||
val detectedImplicitTypesParents = mutableSetOf<FirElement>()
|
||||
val visitedLoopTargets = mutableSetOf<FirLoop>()
|
||||
|
||||
override fun visitElement(element: FirElement, data: FirElement) {
|
||||
element.acceptChildren(this, element)
|
||||
}
|
||||
|
||||
override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: FirElement) {
|
||||
super.visitResolvedTypeRef(resolvedTypeRef, data)
|
||||
resolvedTypeRef.delegatedTypeRef?.let { visitElement(it, data) }
|
||||
}
|
||||
|
||||
override fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: FirElement) {
|
||||
super.visitErrorTypeRef(errorTypeRef, data)
|
||||
errorTypeRef.delegatedTypeRef?.let { visitElement(it, data) }
|
||||
}
|
||||
|
||||
override fun visitLoopJump(loopJump: FirLoopJump, data: FirElement) {
|
||||
super.visitLoopJump(loopJump, data)
|
||||
if (visitedLoopTargets.add(loopJump.target.labeledElement)) {
|
||||
visitElement(loopJump.target.labeledElement, data)
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: FirElement) {
|
||||
detectedImplicitTypesParents += data
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user