Use header->impl mapping in HeaderImplDeclarationChecker.areCompatibleTypes

Construct a special TypeCheckingContext that is aware of the magic
behind the "impl typealias" that implements a "header class"

 #KT-16986 Fixed
This commit is contained in:
Alexander Udalov
2017-04-19 18:08:46 +03:00
parent 1ce4612f74
commit ea727ff3f0
8 changed files with 119 additions and 19 deletions
@@ -0,0 +1,7 @@
package test
header class Simple
header fun createSimple(): Simple
header class Generic<A, B>
header fun <A, B> createGeneric(a: A, b: B): Generic<A, B>
@@ -0,0 +1,9 @@
package test
class SimpleImpl
impl typealias Simple = SimpleImpl
impl fun createSimple(): Simple = SimpleImpl()
class GenericImpl<A, B>
impl typealias Generic<A, B> = GenericImpl<A, B>
impl fun <A, B> createGeneric(a: A, b: B): Generic<A, B> = GenericImpl()
@@ -0,0 +1,11 @@
package test
header fun stringBuilder(sb: StringBuilder)
header fun kotlinVersion(kv: KotlinVersion)
header fun regex(r: Regex)
header fun pair(p: Pair<String, List<Double>>)
header fun <A, B> genericPair(p: Pair<A, B>)
@@ -0,0 +1,11 @@
package test
impl fun stringBuilder(sb: StringBuilder) {}
impl fun kotlinVersion(kv: KotlinVersion) {}
impl fun regex(r: Regex) {}
impl fun pair(p: Pair<String, List<Double>>) {}
impl fun <A, B> genericPair(p: Pair<A, B>) {}