Classes & type aliases, initial import.
This commit is contained in:
committed by
Dmitry Petrov
parent
b17e3b0299
commit
19e95d232a
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.psi2ir.generators
|
||||
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClassImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
|
||||
class ClassGenerator(val declarationGenerator: DeclarationGenerator) : Generator {
|
||||
override val context: GeneratorContext get() = declarationGenerator.context
|
||||
|
||||
fun generateClass(ktClassOrObject: KtClassOrObject): IrClass {
|
||||
val descriptor = getOrFail(BindingContext.CLASS, ktClassOrObject)
|
||||
val irClass = IrClassImpl(ktClassOrObject.startOffset, ktClassOrObject.endOffset, IrDeclarationOrigin.DEFINED, descriptor)
|
||||
// TODO generate members
|
||||
return irClass
|
||||
}
|
||||
}
|
||||
+8
-13
@@ -42,17 +42,12 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
||||
)
|
||||
}
|
||||
|
||||
fun generateClassOrObjectDeclaration(ktDeclaration: KtClassOrObject): IrDeclaration =
|
||||
IrDummyDeclaration(
|
||||
ktDeclaration.startOffset, ktDeclaration.endOffset,
|
||||
getOrFail(BindingContext.CLASS, ktDeclaration)
|
||||
)
|
||||
fun generateClassOrObjectDeclaration(ktClassOrObject: KtClassOrObject): IrClass =
|
||||
ClassGenerator(this).generateClass(ktClassOrObject)
|
||||
|
||||
fun generateTypeAliasDeclaration(ktDeclaration: KtTypeAlias): IrDeclaration =
|
||||
IrDummyDeclaration(
|
||||
ktDeclaration.startOffset, ktDeclaration.endOffset,
|
||||
getOrFail(BindingContext.TYPE_ALIAS, ktDeclaration)
|
||||
)
|
||||
IrTypeAliasImpl(ktDeclaration.startOffset, ktDeclaration.endOffset, IrDeclarationOrigin.DEFINED,
|
||||
getOrFail(BindingContext.TYPE_ALIAS, ktDeclaration))
|
||||
|
||||
fun generateFunctionDeclaration(ktNamedFunction: KtNamedFunction): IrFunction {
|
||||
val functionDescriptor = getOrFail(BindingContext.FUNCTION, ktNamedFunction)
|
||||
@@ -85,11 +80,11 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
||||
|
||||
fun createFunction(ktFunction: KtFunction, functionDescriptor: FunctionDescriptor, body: IrBody): IrFunction =
|
||||
IrFunctionImpl(ktFunction.startOffset, ktFunction.endOffset,
|
||||
IrDeclarationOriginKind.DEFINED, functionDescriptor, body)
|
||||
IrDeclarationOrigin.DEFINED, functionDescriptor, body)
|
||||
|
||||
fun createSimpleProperty(ktProperty: KtProperty, propertyDescriptor: PropertyDescriptor, valueInitializer: IrBody?): IrSimpleProperty =
|
||||
IrSimplePropertyImpl(ktProperty.startOffset, ktProperty.endOffset,
|
||||
IrDeclarationOriginKind.DEFINED, propertyDescriptor, valueInitializer)
|
||||
IrDeclarationOrigin.DEFINED, propertyDescriptor, valueInitializer)
|
||||
|
||||
fun createPropertyGetter(
|
||||
ktPropertyAccessor: KtPropertyAccessor,
|
||||
@@ -98,7 +93,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
||||
getterBody: IrBody
|
||||
): IrPropertyGetter =
|
||||
IrPropertyGetterImpl(ktPropertyAccessor.startOffset, ktPropertyAccessor.endOffset,
|
||||
IrDeclarationOriginKind.DEFINED, getterDescriptor, getterBody)
|
||||
IrDeclarationOrigin.DEFINED, getterDescriptor, getterBody)
|
||||
.apply { irProperty.getter = this }
|
||||
|
||||
fun createPropertySetter(
|
||||
@@ -108,7 +103,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
||||
setterBody: IrBody
|
||||
) : IrPropertySetter =
|
||||
IrPropertySetterImpl(ktPropertyAccessor.startOffset, ktPropertyAccessor.endOffset,
|
||||
IrDeclarationOriginKind.DEFINED, setterDescriptor, setterBody)
|
||||
IrDeclarationOrigin.DEFINED, setterDescriptor, setterBody)
|
||||
.apply { irProperty.setter = this }
|
||||
|
||||
private fun getPropertyDescriptor(ktProperty: KtProperty): PropertyDescriptor {
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.psi2ir.generators
|
||||
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginKind
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariableImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
@@ -138,7 +138,7 @@ class LoopExpressionGenerator(val statementGenerator: StatementGenerator) : Gene
|
||||
val irNextCall = callGenerator.generateCall(ktLoopRange, nextCall, IrOperator.FOR_LOOP_NEXT)
|
||||
val irLoopParameter = if (ktLoopParameter != null) {
|
||||
val loopParameterDescriptor = getOrFail(BindingContext.VALUE_PARAMETER, ktLoopParameter)
|
||||
IrVariableImpl(ktLoopParameter.startOffset, ktLoopParameter.endOffset, IrDeclarationOriginKind.DEFINED,
|
||||
IrVariableImpl(ktLoopParameter.startOffset, ktLoopParameter.endOffset, IrDeclarationOrigin.DEFINED,
|
||||
loopParameterDescriptor, irNextCall)
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
package org.jetbrains.kotlin.psi2ir.generators
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginKind
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariableImpl
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrTemporaryVariableDescriptor
|
||||
@@ -40,7 +40,7 @@ class Scope(val scopeOwner: DeclarationDescriptor) {
|
||||
|
||||
fun createTemporaryVariable(irExpression: IrExpression, nameHint: String? = null): IrVariable =
|
||||
IrVariableImpl(
|
||||
irExpression.startOffset, irExpression.endOffset, IrDeclarationOriginKind.IR_TEMPORARY_VARIABLE,
|
||||
irExpression.startOffset, irExpression.endOffset, IrDeclarationOrigin.IR_TEMPORARY_VARIABLE,
|
||||
createDescriptorForTemporaryVariable(irExpression.type, nameHint),
|
||||
irExpression
|
||||
)
|
||||
|
||||
+3
-3
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.psi2ir.generators
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.assertCast
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginKind
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariableImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
@@ -67,7 +67,7 @@ class StatementGenerator(
|
||||
|
||||
val variableDescriptor = getOrFail(BindingContext.VARIABLE, property)
|
||||
|
||||
val irLocalVariable = IrVariableImpl(property.startOffset, property.endOffset, IrDeclarationOriginKind.DEFINED, variableDescriptor)
|
||||
val irLocalVariable = IrVariableImpl(property.startOffset, property.endOffset, IrDeclarationOrigin.DEFINED, variableDescriptor)
|
||||
irLocalVariable.initializer = property.initializer?.genExpr()
|
||||
return irLocalVariable
|
||||
}
|
||||
@@ -96,7 +96,7 @@ class StatementGenerator(
|
||||
val componentVariable = getOrFail(BindingContext.VARIABLE, ktEntry)
|
||||
val irComponentCall = callGenerator.generateCall(ktEntry.startOffset, ktEntry.endOffset, componentSubstitutedCall,
|
||||
IrOperator.COMPONENT_N.withIndex(index + 1))
|
||||
val irComponentVar = IrVariableImpl(ktEntry.startOffset, ktEntry.endOffset, IrDeclarationOriginKind.DEFINED,
|
||||
val irComponentVar = IrVariableImpl(ktEntry.startOffset, ktEntry.endOffset, IrDeclarationOrigin.DEFINED,
|
||||
componentVariable, irComponentCall)
|
||||
irBlock.addStatement(irComponentVar)
|
||||
}
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@
|
||||
package org.jetbrains.kotlin.psi2ir.generators
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginKind
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariableImpl
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrTemporaryVariableDescriptor
|
||||
|
||||
@@ -21,38 +21,36 @@ import org.jetbrains.kotlin.ir.*
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import java.util.*
|
||||
|
||||
interface IrClassElement : IrElement
|
||||
|
||||
interface IrClass : IrDeclaration {
|
||||
override val declarationKind: IrDeclarationKind
|
||||
get() = IrDeclarationKind.CLASS
|
||||
|
||||
override val descriptor: ClassDescriptor
|
||||
|
||||
val children: List<IrClassElement>
|
||||
val members: List<IrDeclaration>
|
||||
}
|
||||
|
||||
class IrClassImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
originKind: IrDeclarationOriginKind,
|
||||
origin: IrDeclarationOrigin,
|
||||
override val descriptor: ClassDescriptor
|
||||
) : IrDeclarationBase(startOffset, endOffset, originKind), IrClass {
|
||||
override val children: MutableList<IrClassElement> = ArrayList()
|
||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrClass {
|
||||
override val members: MutableList<IrDeclaration> = ArrayList()
|
||||
|
||||
fun addElement(child: IrClassElement) {
|
||||
child.assertDetached()
|
||||
child.setTreeLocation(this, children.size)
|
||||
children.add(child)
|
||||
fun addMember(member: IrDeclaration) {
|
||||
member.assertDetached()
|
||||
member.setTreeLocation(this, members.size)
|
||||
members.add(member)
|
||||
}
|
||||
|
||||
override fun getChild(slot: Int): IrElement? =
|
||||
children.getOrNull(slot)
|
||||
members.getOrNull(slot)
|
||||
|
||||
override fun replaceChild(slot: Int, newChild: IrElement) {
|
||||
newChild.assertDetached()
|
||||
children.getOrNull(slot)?.detach() ?: throwNoSuchSlot(slot)
|
||||
children[slot] = newChild.assertCast()
|
||||
members.getOrNull(slot)?.detach() ?: throwNoSuchSlot(slot)
|
||||
members[slot] = newChild.assertCast()
|
||||
newChild.setTreeLocation(this, slot)
|
||||
}
|
||||
|
||||
@@ -60,7 +58,7 @@ class IrClassImpl(
|
||||
visitor.visitClass(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
children.forEach { it.accept(visitor, data) }
|
||||
members.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,10 +20,10 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
|
||||
interface IrDeclaration : IrStatement, IrClassElement {
|
||||
interface IrDeclaration : IrStatement {
|
||||
val descriptor: DeclarationDescriptor?
|
||||
val declarationKind: IrDeclarationKind
|
||||
val originKind: IrDeclarationOriginKind
|
||||
val origin: IrDeclarationOrigin
|
||||
}
|
||||
|
||||
enum class IrDeclarationKind {
|
||||
@@ -32,13 +32,15 @@ enum class IrDeclarationKind {
|
||||
FUNCTION,
|
||||
PROPERTY_GETTER,
|
||||
PROPERTY_SETTER,
|
||||
CONSTRUCTOR,
|
||||
PROPERTY,
|
||||
VARIABLE,
|
||||
CLASS,
|
||||
TYPEALIAS,
|
||||
DUMMY;
|
||||
}
|
||||
|
||||
enum class IrDeclarationOriginKind {
|
||||
enum class IrDeclarationOrigin {
|
||||
DEFINED,
|
||||
IR_TEMPORARY_VARIABLE,
|
||||
}
|
||||
@@ -46,5 +48,5 @@ enum class IrDeclarationOriginKind {
|
||||
abstract class IrDeclarationBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
override val originKind: IrDeclarationOriginKind
|
||||
override val origin: IrDeclarationOrigin
|
||||
) : IrElementBase(startOffset, endOffset), IrDeclaration
|
||||
|
||||
@@ -25,7 +25,7 @@ class IrDummyDeclaration(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
override val descriptor: DeclarationDescriptor
|
||||
) : IrDeclarationBase(startOffset, endOffset, IrDeclarationOriginKind.DEFINED) {
|
||||
) : IrDeclarationBase(startOffset, endOffset, IrDeclarationOrigin.DEFINED) {
|
||||
override val declarationKind: IrDeclarationKind get() = IrDeclarationKind.DUMMY
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
|
||||
@@ -32,9 +32,9 @@ interface IrFunction : IrDeclaration {
|
||||
abstract class IrFunctionBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
originKind: IrDeclarationOriginKind,
|
||||
origin: IrDeclarationOrigin,
|
||||
body: IrBody? = null
|
||||
) : IrDeclarationBase(startOffset, endOffset, originKind), IrFunction {
|
||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrFunction {
|
||||
init {
|
||||
body?.setTreeLocation(this, FUNCTION_BODY_SLOT)
|
||||
}
|
||||
@@ -70,10 +70,10 @@ abstract class IrFunctionBase(
|
||||
class IrFunctionImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
originKind: IrDeclarationOriginKind,
|
||||
origin: IrDeclarationOrigin,
|
||||
override val descriptor: FunctionDescriptor,
|
||||
body: IrBody
|
||||
) : IrFunctionBase(startOffset, endOffset, originKind, body) {
|
||||
) : IrFunctionBase(startOffset, endOffset, origin, body) {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitFunction(this, data)
|
||||
}
|
||||
|
||||
@@ -44,9 +44,9 @@ interface IrDelegatedProperty : IrProperty {
|
||||
abstract class IrPropertyBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
originKind: IrDeclarationOriginKind,
|
||||
origin: IrDeclarationOrigin,
|
||||
override val descriptor: PropertyDescriptor
|
||||
) : IrDeclarationBase(startOffset, endOffset, originKind), IrProperty {
|
||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrProperty {
|
||||
override var getter: IrPropertyGetter? = null
|
||||
set(newGetter) {
|
||||
newGetter?.run { assert(property == null) { "$newGetter: should not have a property" } }
|
||||
@@ -70,10 +70,10 @@ abstract class IrPropertyBase(
|
||||
class IrSimplePropertyImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
originKind: IrDeclarationOriginKind,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: PropertyDescriptor,
|
||||
valueInitializer: IrBody? = null
|
||||
) : IrPropertyBase(startOffset, endOffset, originKind, descriptor), IrSimpleProperty {
|
||||
) : IrPropertyBase(startOffset, endOffset, origin, descriptor), IrSimpleProperty {
|
||||
override var valueInitializer: IrBody? = valueInitializer
|
||||
set(value) {
|
||||
value?.assertDetached()
|
||||
@@ -106,10 +106,10 @@ class IrSimplePropertyImpl(
|
||||
class IrDelegatedPropertyImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
originKind: IrDeclarationOriginKind,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: PropertyDescriptor,
|
||||
delegateInitializer: IrBody
|
||||
) : IrPropertyBase(startOffset, endOffset, originKind, descriptor), IrDelegatedProperty {
|
||||
) : IrPropertyBase(startOffset, endOffset, origin, descriptor), IrDelegatedProperty {
|
||||
override var delegateInitializer: IrBody = delegateInitializer
|
||||
set(value) {
|
||||
value.assertDetached()
|
||||
|
||||
@@ -44,19 +44,19 @@ interface IrPropertySetter : IrPropertyAccessor {
|
||||
abstract class IrPropertyAccessorBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
originKind: IrDeclarationOriginKind,
|
||||
origin: IrDeclarationOrigin,
|
||||
body: IrBody
|
||||
) : IrFunctionBase(startOffset, endOffset, originKind, body), IrPropertyAccessor {
|
||||
) : IrFunctionBase(startOffset, endOffset, origin, body), IrPropertyAccessor {
|
||||
override var property: IrProperty? = null
|
||||
}
|
||||
|
||||
class IrPropertyGetterImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
originKind: IrDeclarationOriginKind,
|
||||
origin: IrDeclarationOrigin,
|
||||
override val descriptor: PropertyGetterDescriptor,
|
||||
body: IrBody
|
||||
) : IrPropertyAccessorBase(startOffset, endOffset, originKind, body), IrPropertyGetter {
|
||||
) : IrPropertyAccessorBase(startOffset, endOffset, origin, body), IrPropertyGetter {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitPropertyGetter(this, data)
|
||||
}
|
||||
@@ -64,10 +64,10 @@ class IrPropertyGetterImpl(
|
||||
class IrPropertySetterImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
originKind: IrDeclarationOriginKind,
|
||||
origin: IrDeclarationOrigin,
|
||||
override val descriptor: PropertySetterDescriptor,
|
||||
body: IrBody
|
||||
) : IrPropertyAccessorBase(startOffset, endOffset, originKind, body), IrPropertySetter {
|
||||
) : IrPropertyAccessorBase(startOffset, endOffset, origin, body), IrPropertySetter {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitPropertySetter(this, data)
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.ir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
interface IrTypeAlias : IrDeclaration {
|
||||
override val descriptor: TypeAliasDescriptor
|
||||
|
||||
override val declarationKind: IrDeclarationKind
|
||||
get() = IrDeclarationKind.TYPEALIAS
|
||||
}
|
||||
|
||||
class IrTypeAliasImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
override val descriptor: TypeAliasDescriptor
|
||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrTypeAlias {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitTypeAlias(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
// no children
|
||||
}
|
||||
|
||||
override fun getChild(slot: Int): IrElement? = null
|
||||
|
||||
override fun replaceChild(slot: Int, newChild: IrElement) {
|
||||
// no children
|
||||
}
|
||||
}
|
||||
@@ -33,16 +33,16 @@ interface IrVariable : IrDeclaration {
|
||||
class IrVariableImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
originKind: IrDeclarationOriginKind,
|
||||
origin: IrDeclarationOrigin,
|
||||
override val descriptor: VariableDescriptor
|
||||
) : IrDeclarationBase(startOffset, endOffset, originKind), IrVariable {
|
||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrVariable {
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
originKind: IrDeclarationOriginKind,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: VariableDescriptor,
|
||||
initializer: IrExpression
|
||||
) : this(startOffset, endOffset, originKind, descriptor) {
|
||||
) : this(startOffset, endOffset, origin, descriptor) {
|
||||
this.initializer = initializer
|
||||
}
|
||||
|
||||
|
||||
@@ -51,6 +51,12 @@ class RenderIrElementVisitor : IrElementVisitor<String, Nothing?> {
|
||||
override fun visitPropertySetter(declaration: IrPropertySetter, data: Nothing?): String =
|
||||
"PROPERTY_SETTER ${declaration.descriptor.render()} property=${declaration.property?.name()}"
|
||||
|
||||
override fun visitClass(declaration: IrClass, data: Nothing?): String =
|
||||
"CLASS ${declaration.descriptor.kind} ${declaration.descriptor.name}"
|
||||
|
||||
override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?): String =
|
||||
"TYPEALIAS ${declaration.descriptor.name} type=${declaration.descriptor.underlyingType.render()}"
|
||||
|
||||
override fun visitVariable(declaration: IrVariable, data: Nothing?): String =
|
||||
"VAR ${declaration.descriptor.render()}"
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ interface IrElementVisitor<out R, in D> {
|
||||
|
||||
fun visitDeclaration(declaration: IrDeclaration, data: D): R = visitElement(declaration, data)
|
||||
fun visitClass(declaration: IrClass, data: D): R = visitDeclaration(declaration, data)
|
||||
fun visitTypeAlias(declaration: IrTypeAlias, data: D): R = visitDeclaration(declaration, data)
|
||||
fun visitFunction(declaration: IrFunction, data: D): R = visitDeclaration(declaration, data)
|
||||
fun visitPropertyGetter(declaration: IrPropertyGetter, data: D): R = visitFunction(declaration, data)
|
||||
fun visitPropertySetter(declaration: IrPropertySetter, data: D): R = visitFunction(declaration, data)
|
||||
|
||||
@@ -11,7 +11,7 @@ FILE /arrayAugmentedAssignment1.kt
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing
|
||||
CONST Int type=kotlin.Int value='42'
|
||||
DUMMY C
|
||||
CLASS CLASS C
|
||||
FUN public fun testVariable(): kotlin.Unit
|
||||
BLOCK_BODY
|
||||
VAR var x: kotlin.IntArray
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FILE /arrayAugmentedAssignment2.kt
|
||||
DUMMY IA
|
||||
DUMMY IB
|
||||
CLASS INTERFACE IA
|
||||
CLASS INTERFACE IB
|
||||
FUN public fun IB.test(/*0*/ a: IA): kotlin.Unit
|
||||
BLOCK_BODY
|
||||
BLOCK type=kotlin.Unit operator=PLUSEQ
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
FILE /assignments.kt
|
||||
DUMMY Ref
|
||||
CLASS CLASS Ref
|
||||
FUN public fun test1(): kotlin.Unit
|
||||
BLOCK_BODY
|
||||
VAR var x: kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
FILE /augmentedAssignment2.kt
|
||||
DUMMY A
|
||||
CLASS CLASS A
|
||||
FUN public operator fun A.plusAssign(/*0*/ s: kotlin.String): kotlin.Unit
|
||||
BLOCK_BODY
|
||||
FUN public operator fun A.minusAssign(/*0*/ s: kotlin.String): kotlin.Unit
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
FILE /chainOfSafeCalls.kt
|
||||
DUMMY C
|
||||
CLASS CLASS C
|
||||
FUN public fun test(/*0*/ nc: C?): C?
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
FILE /conventionComparisons.kt
|
||||
DUMMY IA
|
||||
DUMMY IB
|
||||
CLASS INTERFACE IA
|
||||
CLASS INTERFACE IB
|
||||
FUN public fun IB.test1(/*0*/ a1: IA, /*1*/ a2: IA): kotlin.Boolean
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
FILE /forWithImplicitReceivers.kt
|
||||
DUMMY FiveTimes
|
||||
DUMMY IntCell
|
||||
DUMMY IReceiver
|
||||
CLASS OBJECT FiveTimes
|
||||
CLASS CLASS IntCell
|
||||
CLASS INTERFACE IReceiver
|
||||
FUN public fun IReceiver.test(): kotlin.Unit
|
||||
BLOCK_BODY
|
||||
BLOCK type=kotlin.Unit operator=FOR_LOOP
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE /safeCallWithIncrementDecrement.kt
|
||||
DUMMY C
|
||||
CLASS CLASS C
|
||||
PROPERTY public var test.C?.p: kotlin.Int getter=<get-p> setter=<set-p>
|
||||
PROPERTY_GETTER public fun test.C?.<get-p>(): kotlin.Int property=p
|
||||
BLOCK_BODY
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
FILE /safeCalls.kt
|
||||
DUMMY Ref
|
||||
DUMMY IHost
|
||||
CLASS CLASS Ref
|
||||
CLASS INTERFACE IHost
|
||||
FUN public fun test1(/*0*/ x: kotlin.String?): kotlin.Int?
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FILE /smartCastsWithDestructuring.kt
|
||||
DUMMY I1
|
||||
DUMMY I2
|
||||
CLASS INTERFACE I1
|
||||
CLASS INTERFACE I2
|
||||
FUN public operator fun I1.component1(): kotlin.Int
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
FILE /typeOperators.kt
|
||||
DUMMY IThing
|
||||
CLASS INTERFACE IThing
|
||||
FUN public fun test1(/*0*/ x: kotlin.Any): kotlin.Boolean
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing
|
||||
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
FILE /values.kt
|
||||
DUMMY Enum
|
||||
DUMMY A
|
||||
CLASS ENUM_CLASS Enum
|
||||
CLASS OBJECT A
|
||||
PROPERTY public val a: kotlin.Int = 0 getter=null setter=null
|
||||
EXPRESSION_BODY
|
||||
CONST Int type=kotlin.Int value='0'
|
||||
DUMMY Z
|
||||
CLASS CLASS Z
|
||||
FUN public fun test1(): Enum
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing
|
||||
|
||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
||||
FILE /when.kt
|
||||
DUMMY A
|
||||
CLASS OBJECT A
|
||||
FUN public fun testWithSubject(/*0*/ x: kotlin.Any?): kotlin.String
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing
|
||||
|
||||
Reference in New Issue
Block a user