Add annotation for default parameter value

This commit is contained in:
Leonid Stashevsky
2017-10-04 14:03:23 +03:00
parent 62e87c873c
commit 0348561cd2
48 changed files with 1827 additions and 39 deletions
@@ -0,0 +1,37 @@
// TARGET_BACKEND: JVM
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
class A {
public int first(
@ParameterName("first") @DefaultValue("42") int a,
@ParameterName("second") @DefaultValue("1") int b
) {
return 100 * a + b;
}
}
// FILE: main.kt
fun box(): String {
val a = A()
if (a.first() != 100 * 42 + 1) {
return "FAIL 1"
}
if (a.first(second = 2) != 100 * 42 + 2) {
return "FAIL 2"
}
if (a.first(first = 2) != 100 * 2 + 1) {
return "FAIL 3"
}
if (a.first(second = 2, first = 5) != 100 * 5 + 2) {
return "FAIL 4"
}
return "OK"
}
@@ -0,0 +1,80 @@
// TARGET_BACKEND: JVM
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
public class A {
public Integer a(@DefaultValue("42") Integer arg) {
return arg;
}
public Float b(@DefaultValue("42.5") Float arg) {
return arg;
}
public Boolean c(@DefaultValue("true") Boolean arg) {
return arg;
}
public Byte d(@DefaultValue("42") Byte arg) {
return arg;
}
public Character e(@DefaultValue("o") Character arg) {
return arg;
}
public Double f(@DefaultValue("1e12") Double arg) {
return arg;
}
public Long g(@DefaultValue("42424242424242") Long arg) {
return arg;
}
public Short h(@DefaultValue("123") Short arg) {
return arg;
}
}
// FILE: test.kt
fun box(): String {
val a = A()
if (a.a() != 42) {
return "FAIL Int: ${a.a()}"
}
if (a.b() != 42.5f) {
return "FAIL Float: ${a.b()}"
}
if (!a.c()) {
return "FAIL Boolean: ${a.c()}"
}
if (a.d() != 42.toByte()) {
return "FAIL Byte: ${a.d()}"
}
if (a.e() != 'o') {
return "FAIL Char: ${a.e()}"
}
if (a.f() != 1e12) {
return "FAIl Double: ${a.f()}"
}
if (a.g() != 42424242424242) {
return "FAIL Long: ${a.g()}"
}
if (a.h() != 123.toShort()) {
return "FAIL Short: ${a.h()}"
}
return "OK"
}
@@ -0,0 +1,42 @@
// TARGET_BACKEND: JVM
// FILE: Signs.java
// ANDROID_ANNOTATIONS
public enum Signs {
HELLO,
WORLD;
}
// FILE: B.kt
enum class B {
X,
Y;
}
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
class A {
public Signs a(@DefaultValue("HELLO") Signs arg) {
return arg;
}
public B b(@DefaultValue("Y") B arg) {
return arg;
}
}
// FILE: test.kt
fun box(): String {
val a = A()
if (a.a() != Signs.HELLO) {
return "FAIL: enums Java"
}
if (a.b() != B.Y) {
return "FAIL: enums Kotlin"
}
return "OK"
}
@@ -0,0 +1,48 @@
// TARGET_BACKEND: JVM
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
public class A {
public Long first(@DefaultValue("0x1F") Long value) {
return value;
}
public Long second(@DefaultValue("0X1F") Long value) {
return value;
}
public Long third(@DefaultValue("0b1010") Long value) {
return value;
}
public Long fourth(@DefaultValue("0B1010") Long value) {
return value;
}
}
// FILE: test.kt
fun box(): String {
val a = A()
if (a.first() != 0x1F.toLong()) {
return "FAIL 1"
}
if (a.second() != 0x1F.toLong()) {
return "FAIL 2"
}
if (a.third() != 0b1010.toLong()) {
return "FAIL 3"
}
if (a.fourth() != 0b1010.toLong()) {
return "FAIL 4"
}
return "OK"
}
@@ -0,0 +1,43 @@
// TARGET_BACKEND: JVM
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
class A {
public int first(@DefaultValue("1") int a, @DefaultValue("2") int b) {
return 100 * a + b;
}
public int second(int a, @DefaultValue("42") int b) {
return 100 * a + b;
}
}
// FILE: main.kt
fun box(): String {
val a = A()
if (a.first() != 102) {
return "FAIL 1"
}
if (a.first(2) != 202) {
return "FAIL 2"
}
if (a.first(3, 4) != 304) {
return "FAIL 3"
}
if (a.second(7, 8) != 708) {
return "FAIL 4"
}
if (a.second(1) != 142) {
return "FAIL 5"
}
return "OK"
}
@@ -0,0 +1,56 @@
// TARGET_BACKEND: JVM
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
public class A {
public Integer foo(@DefaultNull Integer x) { return x; }
public Integer bar(@DefaultNull Integer x) { return x; }
public Integer baz(@DefaultValue("42") Integer x) { return x; }
}
// FILE: AInt.java
import kotlin.annotations.jvm.internal.*;
public interface AInt {
public Integer foo(@DefaultValue("42") Integer x);
public Integer bar(@DefaultNull Integer x);
}
// FILE: B.java
public class B extends A {
public Integer foo(Integer x) { return x; }
}
// FILE: C.java
import kotlin.annotations.jvm.internal.*;
public class C extends A {
public Integer foo(@DefaultValue("42") Integer x) { return x; }
public Integer baz(@DefaultNull Integer x) { return x; }
}
// FILE: D.java
public class D extends A implements AInt {
}
// FILE: test.kt
fun box(): String {
if (A().foo() != null) return "FAIL 0"
if (B().foo() != null) return "FAIL 1"
if (B().bar() != null) return "FAIL 2"
if (C().foo() != null) return "FAIL 3"
if (C().baz() != 42) return "FAIL 4"
if (D().baz() != 42) return "FAIL 5"
return "OK"
}
@@ -0,0 +1,81 @@
// TARGET_BACKEND: JVM
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
import org.jetbrains.annotations.*;
public class A {
public Integer a(@Nullable @DefaultValue("42") Integer arg) {
return arg;
}
public Float b(@Nullable @DefaultValue("42.5") Float arg) {
return arg;
}
public Boolean c(@Nullable @DefaultValue("true") Boolean arg) {
return arg;
}
public Byte d(@Nullable @DefaultValue("42") Byte arg) {
return arg;
}
public Character e(@Nullable @DefaultValue("o") Character arg) {
return arg;
}
public Double f(@Nullable @DefaultValue("1e12") Double arg) {
return arg;
}
public Long g(@Nullable @DefaultValue("42424242424242") Long arg) {
return arg;
}
public Short h(@Nullable @DefaultValue("123") Short arg) {
return arg;
}
}
// FILE: test.kt
fun box(): String {
val a = A()
if (a.a() != 42) {
return "FAIL Int: ${a.a()}"
}
if (a.b() != 42.5f) {
return "FAIL Float: ${a.b()}"
}
if (!a.c()) {
return "FAIL Boolean: ${a.c()}"
}
if (a.d() != 42.toByte()) {
return "FAIL Byte: ${a.d()}"
}
if (a.e() != 'o') {
return "FAIL Char: ${a.e()}"
}
if (a.f() != 1e12) {
return "FAIl Double: ${a.f()}"
}
if (a.g() != 42424242424242) {
return "FAIL Long: ${a.g()}"
}
if (a.h() != 123.toShort()) {
return "FAIL Short: ${a.h()}"
}
return "OK"
}
@@ -0,0 +1,38 @@
// TARGET_BACKEND: JVM
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
class A {
public int first(@DefaultValue("42") int a) {
return a;
}
}
// FILE: B.java
class B extends A {
public int first(int a) {
return a;
}
}
// FILE: test.kt
fun box(): String {
val a = A()
val b = B()
val ab: A = B()
if (a.first() != 42) {
return "FAIL 1"
}
if (b.first() != 42) {
return "FAIL 2"
}
if (ab.first() != 42) {
return "FAIL 4"
}
return "OK"
}
@@ -0,0 +1,88 @@
// TARGET_BACKEND: JVM
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
public class A {
public int a(@DefaultValue("42") int arg) {
return arg;
}
public float b(@DefaultValue("42.5") float arg) {
return arg;
}
public boolean c(@DefaultValue("true") boolean arg) {
return arg;
}
public byte d(@DefaultValue("42") byte arg) {
return arg;
}
public char e(@DefaultValue("o") char arg) {
return arg;
}
public double f(@DefaultValue("1e12") double arg) {
return arg;
}
public String g(@DefaultValue("hello") String arg) {
return arg;
}
public long h(@DefaultValue("42424242424242") long arg) {
return arg;
}
public short i(@DefaultValue("123") short arg) {
return arg;
}
}
// FILE: test.kt
fun box(): String {
val a = A()
if (a.a() != 42) {
return "FAIL Int: ${a.a()}"
}
if (a.b() != 42.5f) {
return "FAIL Float: ${a.b()}"
}
if (!a.c()) {
return "FAIL Boolean: ${a.c()}"
}
if (a.d() != 42.toByte()) {
return "FAIL Byte: ${a.d()}"
}
if (a.e() != 'o') {
return "FAIL Char: ${a.e()}"
}
if (a.f() != 1e12) {
return "FAIl Double: ${a.f()}"
}
if (a.g() != "hello") {
return "FAIL String: ${a.g()}"
}
if (a.h() != 42424242424242) {
return "FAIL Long: ${a.h()}"
}
if (a.i() != 123.toShort()) {
return "FAIL Short: ${a.i()}"
}
return "OK"
}
@@ -0,0 +1,40 @@
// TARGET_BACKEND: JVM
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
public class A {
public String x;
public A(@DefaultValue("OK") String hello) {
x = hello;
}
}
// FILE: test.kt
fun box(): String {
val a = A()
val b = object : A() {
}
val c = object : A() {
fun hello() = x
}
if (a.x != "OK") {
return "FAIL 1"
}
if (b.x != "OK") {
return "FAIL 2"
}
if (c.hello() != "OK") {
return "FAIL 3"
}
return "OK"
}
@@ -0,0 +1,26 @@
// TARGET_BACKEND: JVM
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
public class A {
public int x(@DefaultValue("42") int x) {
return x;
}
}
// FILE: B.kt
class B : A() {
override fun x(x: Int): Int = x + 1
}
// FILE: box.kt
fun box(): String {
if (B().x() != 43) {
return "FAIL"
}
return "OK"
}
@@ -0,0 +1,23 @@
// TARGET_BACKEND: JVM
// FILE: A.kt
open class A {
open fun x(x: Int = foo()) = x
private fun foo() = 42
}
// FILE: B.java
public class B extends A {
public int x(int i) {
return i + 1;
}
}
// FILE: box.kt
fun box(): String {
if (B().x() != 43) {
return "FAIL"
}
return "OK"
}
@@ -0,0 +1,67 @@
// FILE: Signs.java
// ANDROID_ANNOTATIONS
public enum Signs {
HELLO,
WORLD;
public static final Signs X;
public static final class NOT_ENTRY_EITHER {}
}
// FILE: Mixed.java
public enum Mixed {
NOT_ENTRY_EITHER;
public static final class NOT_ENTRY_EITHER {}
}
// FILE: B.kt
enum class B {
X,
Y;
}
// FILE: A.java
import kotlin.annotations.jvm.internal.*;
class A {
public Signs a(@DefaultValue("HELLO") Signs arg) {
return arg;
}
public B b(@DefaultValue("Y") B arg) {
return arg;
}
public void foooo(@DefaultValue("ok") B arg) {
}
public Signs bar(@DefaultValue("X") Signs arg) {
return arg;
}
public Signs baz(@DefaultValue("NOT_ENTRY_EITHER") Signs arg) {
return arg;
}
public Mixed bam(@DefaultValue("NOT_ENTRY_EITHER") Mixed arg) {
return arg;
}
}
// FILE: test.kt
fun test(){
val a = A()
a.a()
a.a(Signs.HELLO)
a.b()
a.b(B.X)
a.foooo(<!NO_VALUE_FOR_PARAMETER!>)<!>
a.foooo(B.Y)
a.bar(<!NO_VALUE_FOR_PARAMETER!>)<!>
a.baz(<!NO_VALUE_FOR_PARAMETER!>)<!>
a.bam(<!NO_VALUE_FOR_PARAMETER!>)<!>
}
@@ -0,0 +1,90 @@
package
public fun test(): kotlin.Unit
public/*package*/ open class A {
public/*package*/ constructor A()
public open fun a(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "HELLO") arg: Signs! = ...): Signs!
public open fun b(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "Y") arg: B! = ...): B!
public open fun bam(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "NOT_ENTRY_EITHER") arg: Mixed!): Mixed!
public open fun bar(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "X") arg: Signs!): Signs!
public open fun baz(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "NOT_ENTRY_EITHER") arg: Signs!): Signs!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun foooo(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "ok") arg: B!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final enum class B : kotlin.Enum<B> {
enum entry X
enum entry Y
private constructor B()
public final override /*1*/ /*fake_override*/ val name: kotlin.String
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: B): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<B!>!
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): B
public final /*synthesized*/ fun values(): kotlin.Array<B>
}
public final enum class Mixed : kotlin.Enum<Mixed!> {
public constructor Mixed()
public final override /*1*/ /*fake_override*/ val name: kotlin.String
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: Mixed!): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<Mixed!>!
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class NOT_ENTRY_EITHER {
public constructor NOT_ENTRY_EITHER()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Mixed
public final /*synthesized*/ fun values(): kotlin.Array<Mixed>
}
public final enum class Signs : kotlin.Enum<Signs!> {
enum entry HELLO
enum entry WORLD
public constructor Signs()
public final override /*1*/ /*fake_override*/ val name: kotlin.String
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: Signs!): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<Signs!>!
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class NOT_ENTRY_EITHER {
public constructor NOT_ENTRY_EITHER()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
// Static members
public final val X: Signs!
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Signs
public final /*synthesized*/ fun values(): kotlin.Array<Signs>
}
@@ -0,0 +1,49 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
public class A {
public void first(@DefaultValue("0x1F") Long value) {
}
public void second(@DefaultValue("0X1F") Long value) {
}
public void third(@DefaultValue("0b1010") Long value) {
}
public void fourth(@DefaultValue("0B1010") Long value) {
}
}
// FILE: B.java
import kotlin.annotations.jvm.internal.*;
public class B {
public void first(@DefaultValue("0x") Long value) {
}
public void second(@DefaultValue("0xZZ") Long value) {
}
public void third(@DefaultValue("0b") Long value) {
}
public void fourth(@DefaultValue("0B1234") Long value) {
}
}
// FILE: test.kt
fun main(a: A, b: B) {
a.first()
a.second()
a.third()
a.fourth()
b.first(<!NO_VALUE_FOR_PARAMETER!>)<!>
b.second(<!NO_VALUE_FOR_PARAMETER!>)<!>
b.third(<!NO_VALUE_FOR_PARAMETER!>)<!>
b.fourth(<!NO_VALUE_FOR_PARAMETER!>)<!>
}
@@ -0,0 +1,25 @@
package
public fun main(/*0*/ a: A, /*1*/ b: B): kotlin.Unit
public open class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun first(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "0x1F") value: kotlin.Long! = ...): kotlin.Unit
public open fun fourth(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "0B1010") value: kotlin.Long! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open fun second(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "0X1F") value: kotlin.Long! = ...): kotlin.Unit
public open fun third(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "0b1010") value: kotlin.Long! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun first(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "0x") value: kotlin.Long!): kotlin.Unit
public open fun fourth(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "0B1234") value: kotlin.Long!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open fun second(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "0xZZ") value: kotlin.Long!): kotlin.Unit
public open fun third(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "0b") value: kotlin.Long!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,31 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
public class A {
public void foo(@DefaultNull Integer x) {}
public void bar(@DefaultNull int x) {}
}
// FILE: B.java
import kotlin.annotations.jvm.internal.*;
public class B<T> {
public void foo(@DefaultNull T t) { }
}
// FILE: test.kt
fun test(a: A, first: B<Int>, second: B<Int?>) {
a.foo()
a.foo(0)
a.bar(<!NO_VALUE_FOR_PARAMETER!>)<!>
a.bar(0)
first.foo()
first.foo(5)
second.foo()
second.foo(5)
}
@@ -0,0 +1,20 @@
package
public fun test(/*0*/ a: A, /*1*/ first: B<kotlin.Int>, /*2*/ second: B<kotlin.Int?>): kotlin.Unit
public open class A {
public constructor A()
public open fun bar(/*0*/ @kotlin.annotations.jvm.internal.DefaultNull x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun foo(/*0*/ @kotlin.annotations.jvm.internal.DefaultNull x: kotlin.Int! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class B</*0*/ T : kotlin.Any!> {
public constructor B</*0*/ T : kotlin.Any!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun foo(/*0*/ @kotlin.annotations.jvm.internal.DefaultNull t: T! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,57 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
public class A {
public void foo(@DefaultNull Integer i) {}
public void bar(@DefaultNull Integer a) {}
public void bam(@DefaultNull Integer a) {}
public void baz(@DefaultValue("42") Integer a) {}
}
// FILE: AInt.java
import kotlin.annotations.jvm.internal.*;
public interface AInt {
public void foo(@DefaultValue("42") Integer i) {}
public void bar(@DefaultNull Integer a) {}
}
// FILE: B.java
import kotlin.annotations.jvm.internal.*;
public class B extends A {
public void foo(Integer i) {}
public void bar(@DefaultValue("42") Integer a) {}
public void bam(@DefaultNull @DefaultValue("42") Integer a) {}
}
// FILE: C.java
public class C extends A implements AInt {
}
// FILE: test.kt
fun test(b: B, c: C) {
b.foo()
b.foo(5)
b.bar()
b.bar(5)
b.bam()
b.bam(5)
c.foo()
c.foo(5)
c.bar()
c.bar(5)
c.bam()
c.bam(5)
c.baz()
c.baz(42)
}
@@ -0,0 +1,44 @@
package
public fun test(/*0*/ b: B, /*1*/ c: C): kotlin.Unit
public open class A {
public constructor A()
public open fun bam(/*0*/ @kotlin.annotations.jvm.internal.DefaultNull a: kotlin.Int! = ...): kotlin.Unit
public open fun bar(/*0*/ @kotlin.annotations.jvm.internal.DefaultNull a: kotlin.Int! = ...): kotlin.Unit
public open fun baz(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "42") a: kotlin.Int! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun foo(/*0*/ @kotlin.annotations.jvm.internal.DefaultNull i: kotlin.Int! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface AInt {
public abstract fun bar(/*0*/ @kotlin.annotations.jvm.internal.DefaultNull a: kotlin.Int! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun foo(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "42") i: kotlin.Int! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class B : A {
public constructor B()
public open override /*1*/ fun bam(/*0*/ @kotlin.annotations.jvm.internal.DefaultNull @kotlin.annotations.jvm.internal.DefaultValue(value = "42") a: kotlin.Int! = ...): kotlin.Unit
public open override /*1*/ fun bar(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "42") a: kotlin.Int! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun baz(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "42") a: kotlin.Int! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ fun foo(/*0*/ i: kotlin.Int! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class C : A, AInt {
public constructor C()
public open override /*1*/ /*fake_override*/ fun bam(/*0*/ @kotlin.annotations.jvm.internal.DefaultNull a: kotlin.Int! = ...): kotlin.Unit
public open override /*2*/ /*fake_override*/ fun bar(/*0*/ @kotlin.annotations.jvm.internal.DefaultNull a: kotlin.Int! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun baz(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "42") a: kotlin.Int! = ...): kotlin.Unit
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun foo(/*0*/ @kotlin.annotations.jvm.internal.DefaultNull i: kotlin.Int! = ...): kotlin.Unit
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,45 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
class A {
public void first(@DefaultValue("hello") String value) {
}
public void second(@DefaultValue("first") String a, @DefaultValue("second") String b) {
}
public void third(@DefaultValue("first") String a, String b) {
}
public void fourth(String first, @DefaultValue("second") String second) {
}
public void wrong(@DefaultValue("hello") Integer i) {
}
}
// FILE: test.kt
fun main() {
val a = A()
a.first()
a.first("arg")
a.second()
a.second("arg")
a.second("first", "second")
a.third("OK"<!NO_VALUE_FOR_PARAMETER!>)<!>
a.third("first", "second")
a.fourth(<!NO_VALUE_FOR_PARAMETER!>)<!>
a.fourth("first")
a.fourth("first", "second")
a.wrong(<!NO_VALUE_FOR_PARAMETER!>)<!>
a.wrong(42)
}
@@ -0,0 +1,15 @@
package
public fun main(): kotlin.Unit
public/*package*/ open class A {
public/*package*/ constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun first(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "hello") value: kotlin.String! = ...): kotlin.Unit
public open fun fourth(/*0*/ first: kotlin.String!, /*1*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "second") second: kotlin.String! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open fun second(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "first") a: kotlin.String! = ..., /*1*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "second") b: kotlin.String! = ...): kotlin.Unit
public open fun third(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "first") a: kotlin.String! = ..., /*1*/ b: kotlin.String!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public open fun wrong(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "hello") i: kotlin.Int!): kotlin.Unit
}
@@ -0,0 +1,100 @@
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
class A {
public void first(@DefaultValue("42") int arg) {
}
}
// FILE: B.java
class B {
public void first(int arg) {
}
}
// FILE: C.java
import kotlin.annotations.jvm.internal.*;
class C extends A {
public void first(@DefaultValue("73") int arg) {
}
}
// FILE: D.java
import kotlin.internal.*;
class D extends B {
public void first(@DefaultValue("37") int arg) {
}
}
// FILE: E.java
import kotlin.annotations.jvm.internal.*;
class E extends A {
public void first(int arg) {
}
}
// FILE: F.kt
open class F {
open fun foo(x: String = "0") {
}
}
// FILE: G.java
class G extends F {
public void foo(String y) {
}
}
// FILE: K.java
import kotlin.annotations.jvm.internal.*;
public interface K {
public void foo(@DefaultValue("1") String x) { }
}
// FILE: L.java
import kotlin.annotations.jvm.internal.*;
public interface L {
public void foo(@DefaultValue("1") String x) { }
}
// FILE: M.java
public class M implements K, L {
public void foo(String x) {
}
}
// FILE: main.kt
fun main() {
val a = A()
val c = C()
val d = D()
val e = E()
val ac: A = C()
val bd: B = D()
a.first()
c.first()
ac.first()
d.first(<!NO_VALUE_FOR_PARAMETER!>)<!>
bd.first(<!NO_VALUE_FOR_PARAMETER!>)<!>
e.first()
val g = G()
g.foo()
g.foo("ok")
val m = M()
m.foo()
}
@@ -0,0 +1,81 @@
package
public fun main(): kotlin.Unit
public/*package*/ open class A {
public/*package*/ constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun first(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "42") arg: kotlin.Int = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class B {
public/*package*/ constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun first(/*0*/ arg: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class C : A {
public/*package*/ constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ fun first(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "73") arg: kotlin.Int = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class D : B {
public/*package*/ constructor D()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ fun first(/*0*/ @DefaultValue(value = "37") /* annotation class not found */ arg: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class E : A {
public/*package*/ constructor E()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ fun first(/*0*/ arg: kotlin.Int = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class F {
public constructor F()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun foo(/*0*/ x: kotlin.String = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class G : F {
public/*package*/ constructor G()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ fun foo(/*0*/ x: kotlin.String = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface K {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun foo(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "1") x: kotlin.String! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface L {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun foo(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "1") x: kotlin.String! = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class M : K, L {
public constructor M()
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ fun foo(/*0*/ x: kotlin.String! = ...): kotlin.Unit
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,17 @@
// IGNORE_BACKEND: JS, NATIVE
// FILE: A.java
// ANDROID_ANNOTATIONS
import kotlin.annotations.jvm.internal.*;
class A {
public static String withDefault(@DefaultValue("OK") String arg) {
return arg;
}
}
// FILE: test.kt
fun box(): String {
return A.withDefault();
}
@@ -0,0 +1,13 @@
package
public fun box(): kotlin.String
public/*package*/ open class A {
public/*package*/ constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public open fun withDefault(/*0*/ @kotlin.annotations.jvm.internal.DefaultValue(value = "OK") arg: kotlin.String! = ...): kotlin.String!
}