Classes & type aliases, initial import.

This commit is contained in:
Dmitry Petrov
2016-08-25 16:38:41 +03:00
committed by Dmitry Petrov
parent b17e3b0299
commit 19e95d232a
29 changed files with 168 additions and 81 deletions
@@ -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
}
}
@@ -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 {
@@ -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
)
@@ -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)
}
@@ -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)
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+3 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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