1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.tools.metalava.model.psi
18 
19 import com.android.tools.metalava.model.ModelOptions
20 import com.android.tools.metalava.model.provider.Capability
21 import com.android.tools.metalava.model.provider.InputFormat
22 import com.android.tools.metalava.model.source.EnvironmentManager
23 import com.android.tools.metalava.model.source.SourceModelProvider
24 
25 // @AutoService(SourceModelProvider::class)
26 internal class PsiSourceModelProvider : SourceModelProvider {
27 
28     override val providerName: String = "psi"
29 
30     override val supportedInputFormats = setOf(InputFormat.JAVA, InputFormat.KOTLIN)
31 
32     override val capabilities: Set<Capability> =
33         setOf(
34             Capability.JAVA,
35             Capability.KOTLIN,
36             Capability.METHOD_BODY,
37             Capability.DOCUMENTATION,
38         )
39 
40     override val modelOptionsList: List<ModelOptions> =
41         listOf(
<lambda>null42             ModelOptions.build("k1") { this[PsiModelOptions.useK2Uast] = false },
<lambda>null43             ModelOptions.build("k2") { this[PsiModelOptions.useK2Uast] = true },
44         )
45 
createEnvironmentManagernull46     override fun createEnvironmentManager(
47         disableStderrDumping: Boolean,
48         forTesting: Boolean,
49     ): EnvironmentManager = PsiEnvironmentManager(disableStderrDumping, forTesting)
50 
51     override fun toString() = providerName
52 }
53