| // IGNORE_BACKEND: WASM_JS, WASM_WASI | |
| // WASM_MUTE_REASON: STDLIB_COLLECTION_INHERITANCE | |
| // KJS_WITH_FULL_RUNTIME | |
| // DONT_TARGET_EXACT_BACKEND: NATIVE | |
| open class Base<Target : DatabaseEntity>() : HashSet<Target>() { | |
| override fun remove(element: Target): Boolean { | |
| return true | |
| } | |
| } | |
| class Derived : Base<Issue>() { | |
| // common "synthetic bridge override fun remove(element: DatabaseEntity): Boolean" should call | |
| // `INVOKEVIRTUAL remove(Issue)` | |
| // instead of `INVOKEVIRTUAL remove(OBJECT)` | |
| override fun remove(element: Issue): Boolean { | |
| return super.remove(element) | |
| } | |
| } | |
| open class DatabaseEntity | |
| class Issue: DatabaseEntity() | |
| fun box(): String { | |
| val sprintIssues = Derived() | |
| if (!sprintIssues.remove(Issue())) return "Fail" | |
| return "OK" | |
| } |