1 /*
2  * Copyright 2020 Google LLC
3  * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 package com.google.devtools.ksp.symbol.impl.binary
19 
20 import com.google.devtools.ksp.processing.impl.findActualsInKSDeclaration
21 import com.google.devtools.ksp.processing.impl.findExpectsInKSDeclaration
22 import com.google.devtools.ksp.symbol.KSDeclaration
23 import com.google.devtools.ksp.symbol.KSExpectActual
24 import org.jetbrains.kotlin.descriptors.MemberDescriptor
25 
26 class KSExpectActualDescriptorImpl(val descriptor: MemberDescriptor) : KSExpectActual {
27     override val isExpect: Boolean = descriptor.isExpect
28 
29     override val isActual: Boolean = descriptor.isActual
30 
<lambda>null31     private val expects: Sequence<KSDeclaration> by lazy {
32         descriptor.findExpectsInKSDeclaration()
33     }
34 
findExpectsnull35     override fun findExpects(): Sequence<KSDeclaration> {
36         if (!isActual)
37             return emptySequence()
38         return expects
39     }
40 
<lambda>null41     private val actuals: Sequence<KSDeclaration> by lazy {
42         descriptor.findActualsInKSDeclaration()
43     }
44 
findActualsnull45     override fun findActuals(): Sequence<KSDeclaration> {
46         if (!isExpect)
47             return emptySequence()
48         return actuals
49     }
50 }
51