Move possibleGetterNamesByPropertyName to FirSyntheticPropertiesScope

This commit is contained in:
Mikhail Glukhikh
2019-11-29 17:07:24 +03:00
parent d15dae6ac6
commit 5275b4d0fc
2 changed files with 20 additions and 17 deletions
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod
import org.jetbrains.kotlin.fir.java.declarations.FirJavaValueParameter import org.jetbrains.kotlin.fir.java.declarations.FirJavaValueParameter
import org.jetbrains.kotlin.fir.resolve.calls.possibleGetterNamesByPropertyName import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticPropertiesScope
import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT
@@ -152,7 +152,7 @@ class JavaClassUseSiteMemberScope(
if (true) { if (true) {
return processAccessorFunctionsAndPropertiesByName(name, emptyList(), null, processor) return processAccessorFunctionsAndPropertiesByName(name, emptyList(), null, processor)
} }
val getterNames = possibleGetterNamesByPropertyName(name) val getterNames = FirSyntheticPropertiesScope.possibleGetterNamesByPropertyName(name)
val setterName = Name.identifier(SETTER_PREFIX + name.identifier.capitalize()) val setterName = Name.identifier(SETTER_PREFIX + name.identifier.capitalize())
return processAccessorFunctionsAndPropertiesByName(name, getterNames, setterName, processor) return processAccessorFunctionsAndPropertiesByName(name, getterNames, setterName, processor)
} }
@@ -66,22 +66,25 @@ class FirSyntheticPropertiesScope(
} }
return ProcessorAction.NEXT return ProcessorAction.NEXT
} }
}
fun possibleGetterNamesByPropertyName(name: Name): List<Name> { companion object {
if (name.isSpecial) return emptyList() fun possibleGetterNamesByPropertyName(name: Name): List<Name> {
val identifier = name.identifier if (name.isSpecial) return emptyList()
val capitalizedAsciiName = identifier.capitalizeAsciiOnly() val identifier = name.identifier
val capitalizedFirstWordName = identifier.capitalizeFirstWord(asciiOnly = true) val capitalizedAsciiName = identifier.capitalizeAsciiOnly()
return listOfNotNull( val capitalizedFirstWordName = identifier.capitalizeFirstWord(asciiOnly = true)
Name.identifier(GETTER_PREFIX + capitalizedAsciiName), return listOfNotNull(
if (capitalizedFirstWordName == capitalizedAsciiName) null else Name.identifier(GETTER_PREFIX + capitalizedFirstWordName), Name.identifier(GETTER_PREFIX + capitalizedAsciiName),
name.takeIf { identifier.startsWith(IS_PREFIX) } if (capitalizedFirstWordName == capitalizedAsciiName) null else Name.identifier(GETTER_PREFIX + capitalizedFirstWordName),
).filter { name.takeIf { identifier.startsWith(IS_PREFIX) }
propertyNameByGetMethodName(it) == name ).filter {
propertyNameByGetMethodName(it) == name
}
}
private const val GETTER_PREFIX = "get"
private const val IS_PREFIX = "is"
} }
} }
private const val GETTER_PREFIX = "get"
private const val IS_PREFIX = "is"