KT-16618 IMPLICIT_INTEGER_COERCION isn't generated for global properties and default parameters

This commit is contained in:
Dmitry Petrov
2017-03-03 14:30:08 +03:00
parent ee6aae7219
commit 8e8f83656f
7 changed files with 124 additions and 8 deletions
@@ -28,7 +28,7 @@ interface IrFunction : IrDeclaration {
override val declarationKind: IrDeclarationKind
get() = IrDeclarationKind.FUNCTION
fun putDefault(parameter: ValueParameterDescriptor, expressionBody: IrBody)
fun getDefault(parameter: ValueParameterDescriptor): IrBody?
fun putDefault(parameter: ValueParameterDescriptor, expressionBody: IrExpressionBody)
fun getDefault(parameter: ValueParameterDescriptor): IrExpressionBody?
}
@@ -17,7 +17,6 @@
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.ir.expressions.IrBody
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
interface IrProperty : IrDeclaration {
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.expressions.IrBody
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import java.util.*
@@ -29,12 +29,12 @@ abstract class IrFunctionBase(
endOffset: Int,
origin: IrDeclarationOrigin
) : IrGeneralFunctionBase(startOffset, endOffset, origin), IrFunction {
private val defaults = LinkedHashMap<ValueParameterDescriptor, IrBody>()
private val defaults = LinkedHashMap<ValueParameterDescriptor, IrExpressionBody>()
override fun getDefault(parameter: ValueParameterDescriptor): IrBody? =
override fun getDefault(parameter: ValueParameterDescriptor): IrExpressionBody? =
defaults[parameter]
override fun putDefault(parameter: ValueParameterDescriptor, expressionBody: IrBody) {
override fun putDefault(parameter: ValueParameterDescriptor, expressionBody: IrExpressionBody) {
defaults[parameter] = expressionBody
}
@@ -26,6 +26,9 @@ interface IrBody : IrElement {
interface IrExpressionBody : IrBody {
var expression: IrExpression
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrExpressionBody =
accept(transformer, data) as IrExpressionBody
}
interface IrBlockBody : IrBody, IrStatementContainer