// !DIAGNOSTICS: -UNUSED_EXPRESSION class UsefulClass(val param: Int = 2) { fun get(instance: Any, property: PropertyMetadata) : Int = 1 fun set(instance: Any, property: PropertyMetadata, value: Int) {} deprecated("message") fun member() {} } deprecated("message") fun Obsolete(param: Int = 1): UsefulClass = UsefulClass(param) class Invocable { deprecated("message") fun invoke() {} } object InvocableHolder { val invocable = Invocable() } fun invoker() { val invocable = Invocable() invocable() InvocableHolder.invocable() } fun block() { Obsolete() Obsolete(2) } fun expression() = Obsolete() fun reflection() = ::Obsolete fun reflection2() = UsefulClass::member class Initializer { val x = Obsolete() } deprecated("does nothing good") fun Any.doNothing() = this.toString() // "this" should not be marked as deprecated despite it referes to deprecated function class Delegation { val x by Obsolete() var y by Obsolete() }