- Type: Design proposal
- Author: Viacheslav Makarov
- Status: Draft
Reduce the need in @UnsafeVariance
. Allow covariant types to have non-private methods
with non-covariant signature. To protect class' covariance, out
-project signatures
// FILE: 1.kt | |
package p3 | |
class A { | |
fun<T> inTransaction(block: (tran: String) -> T): T { | |
println("Function 1") | |
return block("") | |
} | |
fun inTransaction(block: (tran: String) -> Unit) { |
// FILE: 1.kt | |
package p3 | |
class A { | |
fun <T> test(a: List<T>): Int { | |
println("Function 1") | |
return 1 | |
} | |
fun test(b: List<Int>) { | |
println("Function 2") |
Code fragment:
fun test() = 1 // comment
Kotlin code fragment:
fun test2() = 2 // comment
fun bar(s: List<String>) {} | |
fun test() { | |
bar(listOf().filter { false }) | |
} |
\documentclass[10pt]{article} | |
\usepackage[utf8]{inputenc} | |
\usepackage[english,russian]{babel} | |
\inputencoding{utf8} | |
\usepackage{amsmath} | |
\usepackage{amsthm} | |
\usepackage{amssymb} | |
\newcommand{\Expect}{\mathbb E} | |
\newcommand{\PRob}{\mathbb P} |
trait Inv<T> { | |
var t: T | |
} | |
fun <T> some(t: Inv<T>): Inv<Inv<T>> { | |
return object : Inv<Inv<T>> { | |
override var t: Inv<T> | |
get() = t | |
set(value: Inv<T>) { | |
t.t = value.t |
public class Test { | |
private static class A { | |
private int bar; | |
private A() { | |
bar = 3; | |
System.out.println(getBar()); | |
} | |
public int getBar() { | |
return bar; |
open class A { | |
open val bar: Int | |
{ | |
bar = 3 | |
println(bar) | |
} | |
} | |
class B : A() { | |
override val bar = 4 |
open class A() { | |
open fun bar(t: Int = 1) = t | |
} | |
class B: A() { | |
override fun bar(t: Int): Int { | |
return super.bar() | |
} | |
} |