[NI] Fix input/output types for callable reference atom

Input and output types are crucial for type variable fixation order and
 analysis of postponed arguments (callable references, lambdas).

 Specifically, if there is non-fixed type variable inside input types of
 a callable reference, then we'll postpone resolution for such callable
 reference.

 Initial example with the expected type `KMutableProperty1<*, F>` caused
 problems because input types were computed incorrectly (while there
 aren't input types here)

 #KT-25431 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2018-12-05 12:44:09 +03:00
parent 6ebbb6eae3
commit e8a8318ead
10 changed files with 139 additions and 35 deletions
@@ -134,7 +134,7 @@ class IrBuiltIns(
val throwableClass = builtIns.throwable.toIrSymbol()
val kCallableClass = builtIns.getBuiltInClassByFqName(KotlinBuiltIns.FQ_NAMES.kCallable.toSafe()).toIrSymbol()
val kPropertyClass = builtIns.getBuiltInClassByFqName(KotlinBuiltIns.FQ_NAMES.kProperty.asSingleFqName()).toIrSymbol()
val kPropertyClass = builtIns.getBuiltInClassByFqName(KotlinBuiltIns.FQ_NAMES.kPropertyFqName.toSafe()).toIrSymbol()
// TODO switch to IrType
val primitiveTypes = listOf(bool, char, byte, short, int, long, float, double)