[FIR] Add extracting contracts in raw fir builder and light tree builder
This commit is contained in:
@@ -544,7 +544,11 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
}
|
||||
|
||||
override fun visitStatement(statement: FirStatement) {
|
||||
visitElement(statement)
|
||||
if (statement is FirStubStatement) {
|
||||
print("[StubStatement]")
|
||||
} else {
|
||||
visitElement(statement)
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitReturnExpression(returnExpression: FirReturnExpression) {
|
||||
|
||||
@@ -84,4 +84,13 @@ fun <D> FirBlock.transformAllStatementsExceptLast(transformer: FirTransformer<D>
|
||||
TransformData.Nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun FirBlock.replaceFirstStatement(statement: FirStatement): FirStatement {
|
||||
require(this is FirBlockImpl) {
|
||||
"replaceFirstStatement should not be called for ${this::class.simpleName}"
|
||||
}
|
||||
val existed = statements[0]
|
||||
statements[0] = statement
|
||||
return existed
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
object FirStubStatement : FirPureAbstractElement(), FirStatement {
|
||||
override val source: FirSourceElement?
|
||||
get() = null
|
||||
|
||||
override val annotations: List<FirAnnotationCall>
|
||||
get() = emptyList()
|
||||
|
||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirStatement {
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
return this
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user