Support creating flexible types in tests

Flexible types can not be created in normal user code, but if there's a special classifier `kotlin.internal.flexible.ft` with two type parameters,
its occurrences are replaced by flexible types, e.g. `ft<Int, Int?>` becomes `Int!`
This commit is contained in:
Andrey Breslav
2014-10-16 19:19:10 +04:00
parent 8067a9ad56
commit f06e5581aa
20 changed files with 220 additions and 11 deletions
@@ -41,6 +41,7 @@ import org.jetbrains.jet.lang.resolve.java.lazy.SingleModuleClassResolver
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinderFactory
import org.jetbrains.jet.lang.resolve.java.TopDownAnalyzerFacadeForJVM
import org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider
import org.jetbrains.jet.lang.resolve.java.JavaFlexibleTypeCapabilitiesProvider
// NOTE: After making changes, you need to re-generate the injectors.
// To do that, you can run main in this file.
@@ -120,7 +121,8 @@ private fun generatorForTopDownAnalyzerForJvm() =
javaClass<MutablePackageFragmentProvider>(),
javaClass<JavaPropertyInitializerEvaluatorImpl>(),
javaClass<JavaSourceElementFactoryImpl>(),
javaClass<SingleModuleClassResolver>()
javaClass<SingleModuleClassResolver>(),
javaClass<JavaFlexibleTypeCapabilitiesProvider>()
)
field(javaClass<VirtualFileFinder>(), init = GivenExpression(javaClass<VirtualFileFinder>().getName() + ".SERVICE.getInstance(project)"))
}
@@ -185,7 +187,8 @@ private fun generatorForLazyResolveWithJava() =
javaClass<PsiBasedMethodSignatureChecker>(),
javaClass<PsiBasedExternalAnnotationResolver>(),
javaClass<JavaPropertyInitializerEvaluatorImpl>(),
javaClass<JavaSourceElementFactoryImpl>()
javaClass<JavaSourceElementFactoryImpl>(),
javaClass<JavaFlexibleTypeCapabilitiesProvider>()
)
field(javaClass<AdditionalCheckerProvider>(),
init = GivenExpression(javaClass<JavaDeclarationCheckerProvider>().getName() + ".INSTANCE$"))