| // Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| package internal_annotation |
| |
| @Annotation(8, "Base::Annotation::field2", [], []) |
| internal abstract class Base { |
| protected abstract fun foo(): Any? |
| |
| public override fun toString(): String = |
| "${foo() ?: this::class.java.name}" |
| } |
| |
| // If we don't adjust annotation values, lack of f(3|4) will trigger errors on legacy VMs. |
| @Annotation(2, "Impl::Annotation::field2", [3], ["field4"]) |
| internal class Impl(val flag: Boolean) : Base() { |
| override fun foo(): Any? { |
| return when (flag) { |
| true -> null |
| false -> this |
| } |
| } |
| |
| public override fun toString(): String = |
| if (flag) |
| super.toString() |
| else |
| "Impl::toString" |
| } |