TimedIrTransformer
class TimedIrTransformer(pluginContext: IrPluginContext, finder: DeclarationFinder, messageCollector: MessageCollector) : IrElementTransformerVoidWithContext(source)
Rewrites the body of every function annotated with io.github.smyrgeorge.log4k.annotation.Timed so that each invocation records call/error counters and a duration histogram.
Given:
class UserService {
@Timed
fun compute(x: Int): Int { /* body */}
}Content copied to clipboard
the body is replaced with (conceptually):
fun compute(x: Int): Int = meter.timed("UserService.compute").measure { /* body */}Content copied to clipboard
The Meter is resolved by OfThisClassField: a meter: Meter member is reused, else the class's single Meter-typed property (whatever its name); otherwise private val _meter_ = Meter.of(this::class) is synthesized (created once per class). Meter.timed caches its instrument bundle by name, and Meter.Timed.measure is inline, so both regular and suspend function work: the moved body is placed in an inline lambda and therefore keeps its original suspension context.
Constructors
Functions
Link copied to clipboard
Link copied to clipboard
override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: Nothing?): IrStatement
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
override fun visitConstantPrimitive(expression: IrConstantPrimitive, data: Nothing?): IrConstantValue
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
override fun visitContainerExpression(expression: IrContainerExpression, data: Nothing?): IrExpression
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
override fun visitDeclarationReference(expression: IrDeclarationReference, data: Nothing?): IrExpression
Link copied to clipboard
override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: Nothing?): IrElement
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
override fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression, data: Nothing?): IrExpression
Link copied to clipboard
override fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression, data: Nothing?): IrExpression
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
override fun visitErrorCallExpression(expression: IrErrorCallExpression, data: Nothing?): IrExpression
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun visitExternalPackageFragment(declaration: IrExternalPackageFragment): IrExternalPackageFragment
override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: Nothing?): IrExternalPackageFragment
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
override fun visitInlinedFunctionBlock(inlinedBlock: IrInlinedFunctionBlock, data: Nothing?): IrExpression
Link copied to clipboard
override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: Nothing?): IrExpression
Link copied to clipboard
override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: Nothing?): IrStatement
Link copied to clipboard
open fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference): IrExpression
override fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference, data: Nothing?): IrElement
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
override fun visitRawFunctionReference(expression: IrRawFunctionReference, data: Nothing?): IrExpression
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
override fun visitRichCallableReference(expression: IrRichCallableReference<*>, data: Nothing?): IrExpression
Link copied to clipboard
override fun visitRichFunctionReference(expression: IrRichFunctionReference, data: Nothing?): IrExpression
Link copied to clipboard
override fun visitRichPropertyReference(expression: IrRichPropertyReference, data: Nothing?): IrExpression
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
override fun visitStringConcatenation(expression: IrStringConcatenation, data: Nothing?): IrExpression
Link copied to clipboard
override fun visitSuspendableExpression(expression: IrSuspendableExpression, data: Nothing?): IrExpression
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard