| class C<T : Any?> { |
| constructor(t: T) /* primary */ { |
| super/*Any*/() |
| /* <init>() */ |
| |
| } |
| |
| val t: T |
| field = t |
| get |
| |
| override fun hashCode(): Int { |
| return <this>.<get-t>() as Int |
| } |
| |
| } |
| |
| value class IC<TT : Any?> { |
| constructor(c: C<TT>) /* primary */ { |
| super/*Any*/() |
| /* <init>() */ |
| |
| } |
| |
| val c: C<TT> |
| field = c |
| get |
| |
| fun foo(): Int { |
| return <this>.<get-c>().hashCode() |
| } |
| |
| override fun equals(other: Any?): Boolean { |
| when { |
| other !is IC<TT> -> return false |
| } |
| val tmp0_other_with_cast: IC<TT> = other as IC<TT> |
| when { |
| EQEQ(arg0 = <this>.#c, arg1 = tmp0_other_with_cast.#c).not() -> return false |
| } |
| return true |
| } |
| |
| override fun hashCode(): Int { |
| return <this>.#c.hashCode() |
| } |
| |
| override fun toString(): String { |
| return "IC(" + "c=" + <this>.#c + ")" |
| } |
| |
| } |
| |
| fun box(): String { |
| val ic: IC<Int> = IC<Int>(c = C<Int>(t = 42)) |
| when { |
| EQEQ(arg0 = ic.foo(), arg1 = 42).not() -> return "FAIL" |
| } |
| return "OK" |
| } |
| |