FIR accessors: add protection against special names

This commit is contained in:
Mikhail Glukhikh
2019-11-21 16:54:55 +03:00
parent b48a4ace57
commit 8a601b5a0e
@@ -90,7 +90,7 @@ class JavaClassUseSiteMemberScope(
private fun processAccessorFunctionsAndPropertiesByName( private fun processAccessorFunctionsAndPropertiesByName(
propertyName: Name, propertyName: Name,
getterNames: List<Name>, getterNames: List<Name>,
setterName: Name, setterName: Name?,
processor: (FirCallableSymbol<*>) -> ProcessorAction processor: (FirCallableSymbol<*>) -> ProcessorAction
): ProcessorAction { ): ProcessorAction {
val overrideCandidates = mutableSetOf<FirCallableSymbol<*>>() val overrideCandidates = mutableSetOf<FirCallableSymbol<*>>()
@@ -150,6 +150,9 @@ class JavaClassUseSiteMemberScope(
} }
override fun processPropertiesByName(name: Name, processor: (FirCallableSymbol<*>) -> ProcessorAction): ProcessorAction { override fun processPropertiesByName(name: Name, processor: (FirCallableSymbol<*>) -> ProcessorAction): ProcessorAction {
if (name.isSpecial) {
return processAccessorFunctionsAndPropertiesByName(name, emptyList(), null, processor)
}
val identifier = name.identifier val identifier = name.identifier
val capitalizedAsciiName = identifier.capitalizeAsciiOnly() val capitalizedAsciiName = identifier.capitalizeAsciiOnly()
val capitalizedFirstWordName = identifier.capitalizeFirstWord(asciiOnly = true) val capitalizedFirstWordName = identifier.capitalizeFirstWord(asciiOnly = true)
@@ -160,7 +163,7 @@ class JavaClassUseSiteMemberScope(
).filter { ).filter {
propertyNameByGetMethodName(it) == name propertyNameByGetMethodName(it) == name
} }
val setterName = Name.identifier(SETTER_PREFIX + name.asString().capitalize()) val setterName = Name.identifier(SETTER_PREFIX + identifier.capitalize())
return processAccessorFunctionsAndPropertiesByName(name, getterNames, setterName, processor) return processAccessorFunctionsAndPropertiesByName(name, getterNames, setterName, processor)
} }