All Types

arrow.meta.phases.analysis.AnalysisHandler
arrow.meta.dsl.analysis.AnalysisSyntax

The Analysis phase determines if the parsed AST type checks and resolves properly. As part of this phase, we have access to events happening before and after resolution. Before resolution, we are given the chance to modify the compiler trees in the form of KtElement via the Quote Template System.

arrow.meta.quotes.expression.AnnotatedExpression

””” $@annotations $expression “”“.annotatedExpression

(extensions in package arrow.meta.plugins.proofs.phases)
org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
(extensions in package arrow.meta.quotes)
java.util.ArrayList
arrow.meta.ArrowMetaConfigurationKeys

CLI bootstrap service

arrow.meta.dsl.codegen.asm.AsmSyntax

When the compiler goes to codegen, and IR is not enabled by default, it goes into the codegen phase for the JVM where it uses the ASM libs to generate bytecode using the AST and associated descriptors coming from the resolution phase.

arrow.meta.quotes.expression.BinaryExpression

””“$left $operationReference $right””“.binaryExpression

arrow.meta.quotes.expression.BlockExpression

””“$statements””“.block

arrow.meta.quotes.expression.expressionwithlabel.BreakExpression

”"”break$targetLabel”””.break

arrow.meta.plugins.proofs.phases.CallableMemberProof
arrow.meta.quotes.element.CatchClause

”"”catch ($parameter) ${ catchBody }””“.catch

arrow.meta.quotes.element.ClassBody

”””{ $properties $companionObjects $functions }””“.classBody

arrow.meta.phases.codegen.asm.ClassBuilder
arrow.meta.quotes.classorobject.ClassDeclaration

"""|$`@annotations` $kind $name $`(typeParameters)` $`(params)` : $supertypes"} { $body } """.`class`

(extensions in package arrow.meta.plugins.proofs.phases)
org.jetbrains.kotlin.descriptors.ClassDescriptor
(extensions in package arrow.meta.quotes)
org.jetbrains.kotlin.descriptors.ClassDescriptor
arrow.meta.quotes.classorobject.ClassOrObjectScope

A template destructuring Scope for a KtClassOrObject

arrow.meta.plugins.proofs.phases.ClassProof
arrow.meta.CliPlugin

An Arrow Meta CliPlugin is a named function that given a CompilerContext produces a List of ExtensionPhase.

arrow.meta.phases.codegen.asm.Codegen
arrow.meta.dsl.codegen.CodegenSyntax
arrow.meta.phases.analysis.CollectAdditionalSources
arrow.meta.phases.CompilerContext

The Compiler Context represents the environment received by all plugins. The Compiler Context will get more services as they become relevant overtime to the development of compiler plugins.

arrow.meta.phases.Composite
arrow.meta.phases.config.Config
arrow.meta.dsl.config.ConfigSyntax

The configuration phase allows changing the compiler configuration prior to compilation. In this phase, we can programmatically activate and change all compiler flags and system properties the compiler uses to enable/disable the different features in compilation.

arrow.meta.quotes.expression.expressionwithlabel.ContinueExpression

”"”continue”””.continue

arrow.meta.internal.kastree.ast.psi.Converter
arrow.meta.phases.resolve.DeclarationAttributeAlterer
(extensions in package arrow.meta.plugins.proofs.phases)
org.jetbrains.kotlin.descriptors.DeclarationDescriptor
(extensions in package arrow.meta.quotes)
org.jetbrains.kotlin.descriptors.DeclarationDescriptor
arrow.meta.phases.analysis.DefaultElementScope

Default impl for element scopes based on the KtPsiFactory

arrow.meta.quotes.declaration.DestructuringDeclaration

””“$valOrVar ($entries) = $initializer “”“.destructuringDeclaration

arrow.meta.quotes.expression.DotQualifiedExpression

””“$receiverExpression.$selectorExpression””“.dotQualifiedExpression

arrow.meta.phases.analysis.ElementScope
arrow.meta.phases.analysis.Eq
arrow.meta.quotes.expression.expressionwithlabel.ExpressionWithLabel

A template destructuring Scope for a KtExpressionWithLabel

arrow.meta.phases.ExtensionPhase

An ExtensionPhase represents a subscription to one of the Kotlin compiler phases.

arrow.meta.phases.analysis.ExtraImports
arrow.meta.internal.kastree.ast.ExtrasMap
arrow.meta.quotes.filebase.File

file(name, “”” $packageDirective $importList $classes “””)

arrow.meta.quotes.element.FinallySection

”"”finally { $finallyExpression }””“.finally

arrow.meta.quotes.expression.loopexpression.ForExpression

”"”for ($(param) in $loopRange) $body”””.for

arrow.meta.quotes.nameddeclaration.stub.typeparameterlistowner.FunctionBody
(extensions in package arrow.meta.plugins.proofs.phases)
org.jetbrains.kotlin.descriptors.FunctionDescriptor
arrow.meta.quotes.nameddeclaration.notstubbed.FunctionLiteral

”””{$(params)$blockExpression}””“.functionLiteral

arrow.meta.quotes.nameddeclaration.notstubbed.FunctionNotStubbed

A template destructuring Scope for a KtFunctionNotStubbed

arrow.meta.plugins.proofs.phases.GivenProof
arrow.meta.quotes.expression.IfExpression

”"”if ($condition) $then else $else”””.if

arrow.meta.quotes.element.ImportDirective

importDirective(ImportPath(importedFqName, isAllUnder, alias))

arrow.meta.quotes.expression.expressionwithlabel.instanceexpressionwithlabel.InstanceExpressionWithLabel
arrow.meta.internal.registry.InternalRegistry
(extensions in package arrow.meta.phases.codegen.ir)
org.jetbrains.kotlin.ir.expressions.IrCall
(extensions in package arrow.meta.phases.codegen.ir)
org.jetbrains.kotlin.ir.IrElement
arrow.meta.phases.codegen.ir.IRGeneration
(extensions in package arrow.meta.phases.codegen.ir)
org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
(extensions in package arrow.meta.phases.codegen.ir)
org.jetbrains.kotlin.ir.declarations.IrReturnTarget
arrow.meta.dsl.codegen.ir.IrSyntax

The codegen phase is where the compiler emits bytecode and metadata for the different platforms the Kotlin language targets. In this phase, by default, the compiler would go into ASM codegen for the JVM, or into IR codegen if IR is enabled. IR is the Intermediate Representation format the new Kotlin compiler backend targets.

(extensions in package arrow.meta.phases.codegen.ir)
org.jetbrains.kotlin.ir.declarations.IrTypeParametersContainer
arrow.meta.phases.codegen.ir.IrUtils
arrow.meta.quotes.expression.IsExpression

””“$left $operation $type”””.is

(extensions in package arrow.meta.internal)
kotlin.collections.Iterable
(extensions in package arrow.meta.phases.codegen.ir.interpreter.builtins)
kotlin.reflect.KCallable
(extensions in package arrow.meta.phases.resolve)
org.jetbrains.kotlin.types.KotlinType
(extensions in package arrow.meta.phases.analysis)
org.jetbrains.kotlin.psi.KtAnnotated
(extensions in package arrow.meta.internal)
org.jetbrains.kotlin.psi.KtClass
(extensions in package arrow.meta.phases.analysis)
org.jetbrains.kotlin.psi.KtClass
(extensions in package arrow.meta.quotes)
org.jetbrains.kotlin.psi.KtClassOrObject
(extensions in package arrow.meta.phases.analysis.diagnostic)
org.jetbrains.kotlin.psi.KtDeclaration
(extensions in package arrow.meta.phases)
org.jetbrains.kotlin.psi.KtElement
(extensions in package arrow.meta.phases.analysis)
org.jetbrains.kotlin.psi.KtElement
(extensions in package arrow.meta.phases.analysis)
org.jetbrains.kotlin.psi.KtExpression
(extensions in package arrow.meta.quotes)
org.jetbrains.kotlin.psi.KtFile
(extensions in package arrow.meta.phases.analysis)
org.jetbrains.kotlin.psi.KtFunction
arrow.meta.quotes.expression.LambdaExpression

lambdaExpression(“””$(params)”””, “”“$bodyExpression”””)

(extensions in package arrow.meta.internal)
kotlin.collections.List
(extensions in package arrow.meta.phases.analysis)
kotlin.collections.List
(extensions in package arrow.meta.quotes)
kotlin.collections.List
arrow.meta.log.Log
arrow.meta.quotes.expression.loopexpression.LoopExpression

A base template destructuring Scope for all KtLoopExpression AST elements

(extensions in package arrow.meta.internal)
kotlin.collections.Map
arrow.meta.Meta

Meta is the core entry point and impl of Arrow Meta in terms of its registration system and interface with the Kotlin Compiler

arrow.meta.MetaCliProcessor
arrow.meta.phases.analysis.MetaFileViewProvider

Provides interception access to the internals of a VirtualFile allowing to replace its Document

arrow.meta.dsl.MetaPluginSyntax
(extensions in package arrow.meta.phases.codegen.ir.interpreter.builtins)
java.lang.reflect.Method
arrow.meta.quotes.modifierlistowner.ModifierList

””” $@annotations $modifier value “””.modifierList

arrow.meta.internal.kastree.ast.MutableVisitor
arrow.meta.quotes.nameddeclaration.stub.typeparameterlistowner.NamedFunction

””” $modality $visibility fun $(typeParameters) $receiver.$name $(args) : $returnType = { $body } “”“.namedFunction

arrow.meta.internal.kastree.ast.Node
arrow.meta.internal.Noop
arrow.meta.quotes.classorobject.ObjectDeclaration

””” object $name { $body }””“.objectDeclaration

arrow.meta.plugins.proofs.phases.ObjectProof
arrow.meta.quotes.element.PackageDirective

””” $package “””.package

arrow.meta.phases.resolve.PackageProvider
(extensions in package arrow.meta.quotes)
org.jetbrains.kotlin.descriptors.PackageViewDescriptor
arrow.meta.quotes.nameddeclaration.stub.Parameter

””” $name : $type””“.classParameter

arrow.meta.quotes.element.ParameterList

””” $(params) “”“.parameterList

arrow.meta.internal.kastree.ast.psi.Parser
arrow.meta.Plugin
arrow.meta.phases.analysis.PreprocessedVirtualFileFactory
arrow.meta.plugins.proofs.phases.Proof
arrow.meta.plugins.proofs.phases.resolve.cache.ProofsCache
arrow.meta.quotes.nameddeclaration.stub.typeparameterlistowner.Property

””” $modality $visibility $valOrVar $name $returnType $initializer “”“.property

arrow.meta.quotes.declaration.PropertyAccessor

””” var $name $returnType $initializer $visibility get $(params)$bodyExpression” ““.propertyAccessorGet

(extensions in package arrow.meta.plugins.proofs.phases)
org.jetbrains.kotlin.descriptors.PropertyDescriptor
(extensions in package arrow.meta.phases.analysis)
org.jetbrains.kotlin.com.intellij.psi.PsiElement
arrow.meta.quotes.Quote

Quote Templates DSL

arrow.meta.quotes.QuoteDefinition
arrow.meta.quotes.QuoteFactory
arrow.meta.quotes.QuoteProcessor

Quote processor defines how quotes should behave related with its processing phase

arrow.meta.dsl.resolve.ResolveSyntax

The Resolve phase is in charge of providing the meaning of the Kotlin Language to the structured trees discovered by the Kotlin parser. Right up until Analysis, we are just working with a tree structure—the AST. In resolution, we proceed to type-check the AST and all its expressions, associating each of them to a DeclarationDescriptor. A DeclarationDescriptor is a model that contains the type and Kotlin structure, as it understands our sources in the AST.

arrow.meta.quotes.expression.expressionwithlabel.ReturnExpression

”"”return”””.return

arrow.meta.quotes.Scope

The property scope used in destructuring templates & the arrow.meta.phases.analysis.ElementScope DSL

arrow.meta.quotes.ScopedList
arrow.meta.internal.SealedSubclass
arrow.meta.phases.config.StorageComponentContainer
(extensions in package arrow.meta)
kotlin.String
(extensions in package arrow.meta.internal)
kotlin.String
arrow.meta.quotes.SyntheticElement
arrow.meta.phases.resolve.synthetics.SyntheticResolver
arrow.meta.phases.resolve.synthetics.SyntheticScopeProvider
arrow.meta.quotes.expression.expressionwithlabel.instanceexpressionwithlabel.ThisExpression

””“$instanceReference$targetLabel”””.this

arrow.meta.quotes.expression.ThrowExpression

”"”throw $thrownExpression”””.throw

arrow.meta.quotes.Transform

The resulting action from matching on transformation

arrow.meta.quotes.expression.TryExpression

”"”try $tryBlock$catchClauses$finallySection”””.try

arrow.meta.quotes.nameddeclaration.stub.typeparameterlistowner.TypeAlias

typeAlias(“”“$name”””, (typeParameters).toStringList() , “”“$type”””)

arrow.meta.quotes.TypedQuote

Typed Quote Templates DSL

arrow.meta.quotes.TypedQuoteFactory
arrow.meta.quotes.TypedQuoteTemplate
arrow.meta.quotes.TypedScope
arrow.meta.quotes.nameddeclaration.stub.typeparameterlistowner.TypeParameterListOwner

A template destructuring Scope for a KtExpressionWithLabel

arrow.meta.quotes.modifierlistowner.TypeReference

A template destructuring Scope for a TypeReference.

arrow.meta.quotes.element.ValueArgument

(if (!argumentName.toString().isNullOrEmpty()) “”“$argumentName = $argumentExpression””” else “”“$argumentExpression”””).argument

arrow.meta.internal.kastree.ast.Visitor
arrow.meta.quotes.element.whencondition.WhenCondition

condition.whenCondition

arrow.meta.quotes.element.WhenEntry

(if (!isElse) “”“$conditions -> $expression””” else “"”else -> $expression”””).whenEntry

arrow.meta.quotes.expression.WhenExpression

A template destructuring Scope for a KtWhenExpression.

arrow.meta.quotes.WhenScope
arrow.meta.quotes.expression.loopexpression.WhileExpression

”"”while ($condition) $body”””.while

arrow.meta.internal.kastree.ast.Writer

Do you like Arrow?

Arrow Org
<