If all candidates are invisible then don't report ambiguity

#KT-10045 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2017-06-20 15:07:16 +03:00
parent cd1ae7f0f2
commit 4b3ffd9418
11 changed files with 53 additions and 21 deletions
@@ -196,7 +196,7 @@ class CandidateResolver(
getReceiverValueWithSmartCast(receiverArgument, smartCastType), candidateDescriptor, scope.ownerDescriptor)
return if (invisibleMember != null) {
tracing.invisibleMember(trace, invisibleMember)
OTHER_ERROR
INVISIBLE_MEMBER_ERROR
} else {
SUCCESS
}
@@ -25,6 +25,7 @@ public enum ResolutionStatus {
UNSAFE_CALL_ERROR,
WRONG_NUMBER_OF_TYPE_ARGUMENTS_ERROR,
UNSTABLE_SMARTCAST_ERROR,
INVISIBLE_MEMBER_ERROR,
OTHER_ERROR,
ARGUMENTS_MAPPING_ERROR,
// '1.foo()' shouldn't be resolved to 'fun String.foo()'
@@ -42,6 +43,7 @@ public enum ResolutionStatus {
EnumSet.of(UNSAFE_CALL_ERROR), // weakest
EnumSet.of(WRONG_NUMBER_OF_TYPE_ARGUMENTS_ERROR),
EnumSet.of(UNSTABLE_SMARTCAST_ERROR),
EnumSet.of(INVISIBLE_MEMBER_ERROR),
EnumSet.of(OTHER_ERROR),
EnumSet.of(ARGUMENTS_MAPPING_ERROR),
EnumSet.of(RECEIVER_TYPE_ERROR),