| /* |
| * Copyright 2021 Google LLC |
| * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| // WITH_RUNTIME |
| // TEST PROCESSOR: FunctionTypeProcessor |
| // EXPECTED: |
| // a: Function0 : true, false |
| // b: Function1 : true, false |
| // c: Function0 : true, false |
| // d: Function2 : true, false |
| // e: KFunction0 : true, false |
| // f: KSuspendFunction0 : false, true |
| // g: KFunction1 : true, false |
| // h: KSuspendFunction1 : false, true |
| // i: Function1 : true, false |
| // j: SuspendFunction1 : false, true |
| // k: SuspendFunction0 : false, true |
| // l: SuspendFunction1 : false, true |
| // m: SuspendFunction0 : false, true |
| // n: SuspendFunction2 : false, true |
| // o: KFunction0 : true, false |
| // p: KSuspendFunction0 : false, true |
| // vbar: KSuspendFunction0 : false, true |
| // vfoo: KFunction0 : true, false |
| // END |
| |
| @file:Suppress("Boolean", "Byte", "Int", "Short", "Double", "Float", "Unit", "Suppress", "C") |
| |
| class C { |
| fun foo(): Boolean = true |
| suspend fun bar(): Int = 0 |
| val vfoo = ::foo |
| val vbar = ::bar |
| } |
| |
| fun foo() = Unit |
| suspend fun bar() = Unit |
| |
| val a: () -> Unit = TODO() |
| val b: (Int) -> Unit = TODO() |
| val c: () -> Byte = TODO() |
| val d: (Short, Float) -> Double = TODO() |
| |
| val e = C().vfoo |
| val f = C().vbar |
| val g = C::foo |
| val h = C::bar |
| |
| val i: Int.() -> Boolean = TODO() |
| val j: suspend Boolean.() -> Int = TODO() |
| |
| val k: suspend () -> Unit = TODO() |
| val l: suspend (Int) -> Unit = TODO() |
| val m: suspend () -> Byte = TODO() |
| val n: suspend (Short, Float) -> Double = TODO() |
| |
| val o = ::foo |
| val p = ::bar |