Revert "Minor, move SpecialNames.isSafeIdentifier check a little earlier"

This reverts commit a3055edda9.

It turns out, this re-introduces an AssertionError at ClassId.<init> ("Class
name must not be root") when LazyJavaPackageScope#getContributedClassifier is
called during SAM constructor resolution below in
LazyJavaPackageScope#computeNonDeclaredFunctions, which was overlooked at the
time the commit was pushed
This commit is contained in:
Alexander Udalov
2016-05-04 17:41:49 +03:00
parent 16c38a2415
commit 17dacb1efa
3 changed files with 11 additions and 9 deletions
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.incremental.record
import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext
import org.jetbrains.kotlin.load.java.structure.JavaPackage
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.SpecialNames
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.storage.getValue
@@ -48,8 +47,6 @@ class JvmPackageScope(
}
override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? {
if (!SpecialNames.isSafeIdentifier(name)) return null
recordLookup(location, name)
val javaClassifier = javaScope.getContributedClassifier(name, location)
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.SpecialNames
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.storage.NullableLazyValue
@@ -102,17 +103,19 @@ class LazyJavaPackageScope(
override fun hashCode() = name.hashCode()
}
override fun getContributedClassifier(name: Name, location: LookupLocation): ClassDescriptor? {
override fun getContributedClassifier(name: Name, location: LookupLocation) = findClassifier(name, null)
private fun findClassifier(name: Name, javaClass: JavaClass?): ClassDescriptor? {
if (!SpecialNames.isSafeIdentifier(name)) return null
val knownClassNamesInPackage = knownClassNamesInPackage()
if (knownClassNamesInPackage != null && name.asString() !in knownClassNamesInPackage) {
if (javaClass == null && knownClassNamesInPackage != null && name.asString() !in knownClassNamesInPackage) {
return null
}
return findClassifier(name, null)
return classes(FindClassRequest(name, javaClass))
}
private fun findClassifier(name: Name, javaClass: JavaClass?): ClassDescriptor? = classes(FindClassRequest(name, javaClass))
internal fun findClassifierByJavaClass(javaClass: JavaClass) = findClassifier(javaClass.name, javaClass)
override fun getContributedVariables(name: Name, location: LookupLocation): Collection<PropertyDescriptor> = emptyList()