Cleanup: apply "cascade if..." inspection (+ some others)
This commit is contained in:
committed by
Mikhail Glukhikh
parent
9c06739594
commit
1d2017b0fc
@@ -343,12 +343,11 @@ class ExpectedInfos(
|
||||
}
|
||||
|
||||
val tail = if (argumentName == null) {
|
||||
if (parameter == parameters.last())
|
||||
rparenthTail
|
||||
else if (parameters.dropWhile { it != parameter }.drop(1).any(::needCommaForParameter))
|
||||
Tail.COMMA
|
||||
else
|
||||
null
|
||||
when {
|
||||
parameter == parameters.last() -> rparenthTail
|
||||
parameters.dropWhile { it != parameter }.drop(1).any(::needCommaForParameter) -> Tail.COMMA
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
else {
|
||||
namedArgumentTail(argumentToParameter, argumentName, descriptor)
|
||||
@@ -404,12 +403,11 @@ class ExpectedInfos(
|
||||
private fun namedArgumentTail(argumentToParameter: Map<ValueArgument, ValueParameterDescriptor>, argumentName: Name, descriptor: FunctionDescriptor): Tail? {
|
||||
val usedParameterNames = (argumentToParameter.values.map { it.name } + listOf(argumentName)).toSet()
|
||||
val notUsedParameters = descriptor.valueParameters.filter { it.name !in usedParameterNames }
|
||||
return if (notUsedParameters.isEmpty())
|
||||
Tail.RPARENTH // named arguments no supported for []
|
||||
else if (notUsedParameters.all { it.hasDefaultValue() })
|
||||
null
|
||||
else
|
||||
Tail.COMMA
|
||||
return when {
|
||||
notUsedParameters.isEmpty() -> Tail.RPARENTH // named arguments no supported for []
|
||||
notUsedParameters.all { it.hasDefaultValue() } -> null
|
||||
else -> Tail.COMMA
|
||||
}
|
||||
}
|
||||
|
||||
private fun calculateForEqAndAssignment(expressionWithType: KtExpression): Collection<ExpectedInfo>? {
|
||||
|
||||
@@ -35,15 +35,14 @@ class ImportableFqNameClassifier(private val file: KtFile) {
|
||||
for (import in file.importDirectives) {
|
||||
val importPath = import.importPath ?: continue
|
||||
val fqName = importPath.fqName
|
||||
if (importPath.isAllUnder) {
|
||||
allUnderImports.add(fqName)
|
||||
}
|
||||
else if (!importPath.hasAlias()) {
|
||||
preciseImports.add(fqName)
|
||||
preciseImportPackages.add(fqName.parent())
|
||||
} else {
|
||||
excludedImports.add(fqName)
|
||||
// TODO: support aliased imports in completion
|
||||
when {
|
||||
importPath.isAllUnder -> allUnderImports.add(fqName)
|
||||
!importPath.hasAlias() -> {
|
||||
preciseImports.add(fqName)
|
||||
preciseImportPackages.add(fqName.parent())
|
||||
}
|
||||
else -> excludedImports.add(fqName)
|
||||
// TODO: support aliased imports in completion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,79 +174,45 @@ object KotlinNameSuggester {
|
||||
val typeChecker = KotlinTypeChecker.DEFAULT
|
||||
if (ErrorUtils.containsErrorType(type)) return
|
||||
|
||||
if (typeChecker.equalTypes(builtIns.booleanType, type)) {
|
||||
addName("b", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.intType, type)) {
|
||||
addName("i", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.byteType, type)) {
|
||||
addName("byte", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.longType, type)) {
|
||||
addName("l", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.floatType, type)) {
|
||||
addName("fl", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.doubleType, type)) {
|
||||
addName("d", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.shortType, type)) {
|
||||
addName("sh", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.charType, type)) {
|
||||
addName("c", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.stringType, type)) {
|
||||
addName("s", validator)
|
||||
}
|
||||
else if (KotlinBuiltIns.isArray(type) || KotlinBuiltIns.isPrimitiveArray(type)) {
|
||||
val elementType = builtIns.getArrayElementType(type)
|
||||
if (typeChecker.equalTypes(builtIns.booleanType, elementType)) {
|
||||
addName("booleans", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.intType, elementType)) {
|
||||
addName("ints", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.byteType, elementType)) {
|
||||
addName("bytes", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.longType, elementType)) {
|
||||
addName("longs", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.floatType, elementType)) {
|
||||
addName("floats", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.doubleType, elementType)) {
|
||||
addName("doubles", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.shortType, elementType)) {
|
||||
addName("shorts", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.charType, elementType)) {
|
||||
addName("chars", validator)
|
||||
}
|
||||
else if (typeChecker.equalTypes(builtIns.stringType, elementType)) {
|
||||
addName("strings", validator)
|
||||
}
|
||||
else {
|
||||
val classDescriptor = TypeUtils.getClassDescriptor(elementType)
|
||||
if (classDescriptor != null) {
|
||||
val className = classDescriptor.name
|
||||
addName("arrayOf" + StringUtil.capitalize(className.asString()) + "s", validator)
|
||||
when {
|
||||
typeChecker.equalTypes(builtIns.booleanType, type) -> addName("b", validator)
|
||||
typeChecker.equalTypes(builtIns.intType, type) -> addName("i", validator)
|
||||
typeChecker.equalTypes(builtIns.byteType, type) -> addName("byte", validator)
|
||||
typeChecker.equalTypes(builtIns.longType, type) -> addName("l", validator)
|
||||
typeChecker.equalTypes(builtIns.floatType, type) -> addName("fl", validator)
|
||||
typeChecker.equalTypes(builtIns.doubleType, type) -> addName("d", validator)
|
||||
typeChecker.equalTypes(builtIns.shortType, type) -> addName("sh", validator)
|
||||
typeChecker.equalTypes(builtIns.charType, type) -> addName("c", validator)
|
||||
typeChecker.equalTypes(builtIns.stringType, type) -> addName("s", validator)
|
||||
KotlinBuiltIns.isArray(type) || KotlinBuiltIns.isPrimitiveArray(type) -> {
|
||||
val elementType = builtIns.getArrayElementType(type)
|
||||
when {
|
||||
typeChecker.equalTypes(builtIns.booleanType, elementType) -> addName("booleans", validator)
|
||||
typeChecker.equalTypes(builtIns.intType, elementType) -> addName("ints", validator)
|
||||
typeChecker.equalTypes(builtIns.byteType, elementType) -> addName("bytes", validator)
|
||||
typeChecker.equalTypes(builtIns.longType, elementType) -> addName("longs", validator)
|
||||
typeChecker.equalTypes(builtIns.floatType, elementType) -> addName("floats", validator)
|
||||
typeChecker.equalTypes(builtIns.doubleType, elementType) -> addName("doubles", validator)
|
||||
typeChecker.equalTypes(builtIns.shortType, elementType) -> addName("shorts", validator)
|
||||
typeChecker.equalTypes(builtIns.charType, elementType) -> addName("chars", validator)
|
||||
typeChecker.equalTypes(builtIns.stringType, elementType) -> addName("strings", validator)
|
||||
else -> {
|
||||
val classDescriptor = TypeUtils.getClassDescriptor(elementType)
|
||||
if (classDescriptor != null) {
|
||||
val className = classDescriptor.name
|
||||
addName("arrayOf" + StringUtil.capitalize(className.asString()) + "s", validator)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (type.isFunctionType) {
|
||||
addName("function", validator)
|
||||
}
|
||||
else {
|
||||
val descriptor = type.constructor.declarationDescriptor
|
||||
if (descriptor != null) {
|
||||
val className = descriptor.name
|
||||
if (!className.isSpecial) {
|
||||
addCamelNames(className.asString(), validator)
|
||||
type.isFunctionType -> addName("function", validator)
|
||||
else -> {
|
||||
val descriptor = type.constructor.declarationDescriptor
|
||||
if (descriptor != null) {
|
||||
val className = descriptor.name
|
||||
if (!className.isSpecial) {
|
||||
addCamelNames(className.asString(), validator)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,25 +204,24 @@ fun KtModifierListOwner.setVisibility(visibilityModifier: KtModifierKeywordToken
|
||||
}
|
||||
|
||||
fun KtDeclaration.implicitVisibility(): KtModifierKeywordToken? =
|
||||
if (this is KtConstructor<*>) {
|
||||
val klass = getContainingClassOrObject()
|
||||
if (klass is KtClass && (klass.isEnum() || klass.isSealed())) KtTokens.PRIVATE_KEYWORD
|
||||
else KtTokens.DEFAULT_VISIBILITY_KEYWORD
|
||||
}
|
||||
else if (hasModifier(KtTokens.OVERRIDE_KEYWORD)) {
|
||||
(resolveToDescriptor(BodyResolveMode.PARTIAL) as? CallableMemberDescriptor)
|
||||
?.overriddenDescriptors
|
||||
?.let { OverridingUtil.findMaxVisibility(it) }
|
||||
?.toKeywordToken()
|
||||
}
|
||||
else {
|
||||
KtTokens.DEFAULT_VISIBILITY_KEYWORD
|
||||
when {
|
||||
this is KtConstructor<*> -> {
|
||||
val klass = getContainingClassOrObject()
|
||||
if (klass is KtClass && (klass.isEnum() || klass.isSealed())) KtTokens.PRIVATE_KEYWORD
|
||||
else KtTokens.DEFAULT_VISIBILITY_KEYWORD
|
||||
}
|
||||
hasModifier(KtTokens.OVERRIDE_KEYWORD) -> {
|
||||
(resolveToDescriptor(BodyResolveMode.PARTIAL) as? CallableMemberDescriptor)
|
||||
?.overriddenDescriptors
|
||||
?.let { OverridingUtil.findMaxVisibility(it) }
|
||||
?.toKeywordToken()
|
||||
}
|
||||
else -> {
|
||||
KtTokens.DEFAULT_VISIBILITY_KEYWORD
|
||||
}
|
||||
}
|
||||
|
||||
fun KtModifierListOwner.canBePrivate(): Boolean {
|
||||
if (modifierList?.hasModifier(KtTokens.ABSTRACT_KEYWORD) ?: false) return false
|
||||
return true
|
||||
}
|
||||
fun KtModifierListOwner.canBePrivate() = modifierList?.hasModifier(KtTokens.ABSTRACT_KEYWORD) != true
|
||||
|
||||
fun KtModifierListOwner.canBeProtected(): Boolean {
|
||||
val parent = this.parent
|
||||
|
||||
Reference in New Issue
Block a user