提交 8d16bd12 编写于 作者: D Dmitry Petrov

Method can be hidden if it is annotated with kotlin.internal.PlatformDependent,

or is a Java method from a Kotlin built-in class (transitively).

https://github.com/Kotlin/KEEP/blob/master/proposals/jdk-dependent-built-ins.md#backward-compatibility-of-overrides
上级 d9271b54
/*
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.resolve.jvm
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.OverridesBackwardCompatibilityHelper
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
import org.jetbrains.kotlin.serialization.deserialization.PLATFORM_DEPENDENT_ANNOTATION_FQ_NAME
object JvmOverridesBackwardCompatibilityHelper : OverridesBackwardCompatibilityHelper {
override fun overrideCanBeOmitted(overridingDescriptor: CallableMemberDescriptor): Boolean {
val visitedDescriptors = hashSetOf<CallableMemberDescriptor>()
return overridingDescriptor.overriddenDescriptors.all {
isPlatformSpecificDescriptorThatCanBeImplicitlyOverridden(it, visitedDescriptors)
}
}
private fun isPlatformSpecificDescriptorThatCanBeImplicitlyOverridden(
overriddenDescriptor: CallableMemberDescriptor,
visitedDescriptors: MutableSet<CallableMemberDescriptor>
): Boolean {
if (overriddenDescriptor.modality == Modality.FINAL) return false
if (visitedDescriptors.contains(overriddenDescriptor.original)) return true
visitedDescriptors.add(overriddenDescriptor.original)
when (overriddenDescriptor.kind) {
CallableMemberDescriptor.Kind.DELEGATION,
CallableMemberDescriptor.Kind.FAKE_OVERRIDE ->
return isOverridingOnlyDescriptorsThatCanBeImplicitlyOverridden(overriddenDescriptor, visitedDescriptors)
CallableMemberDescriptor.Kind.DECLARATION -> {
when {
overriddenDescriptor.annotations.hasAnnotation(PLATFORM_DEPENDENT_ANNOTATION_FQ_NAME) ->
return true
overriddenDescriptor is JavaMethodDescriptor -> {
val containingClass = DescriptorUtils.getContainingClass(overriddenDescriptor)
?: return false
if (JavaToKotlinClassMap.INSTANCE.mapKotlinToJava(containingClass.fqNameUnsafe) != null) return true
if (overriddenDescriptor.overriddenDescriptors.isEmpty()) return false
return isOverridingOnlyDescriptorsThatCanBeImplicitlyOverridden(overriddenDescriptor, visitedDescriptors)
}
else ->
return false
}
}
else ->
return false
}
}
private fun isOverridingOnlyDescriptorsThatCanBeImplicitlyOverridden(
overriddenDescriptor: CallableMemberDescriptor,
visitedDescriptors: MutableSet<CallableMemberDescriptor>
): Boolean =
overriddenDescriptor.overriddenDescriptors.all {
isPlatformSpecificDescriptorThatCanBeImplicitlyOverridden(it, visitedDescriptors)
}
}
\ No newline at end of file
......@@ -24,10 +24,7 @@ import org.jetbrains.kotlin.resolve.PlatformConfigurator
import org.jetbrains.kotlin.resolve.calls.checkers.ReifiedTypeParameterSubstitutionChecker
import org.jetbrains.kotlin.resolve.checkers.MissingDependencyClassChecker
import org.jetbrains.kotlin.resolve.checkers.HeaderImplDeclarationChecker
import org.jetbrains.kotlin.resolve.jvm.JvmDelegationFilter
import org.jetbrains.kotlin.resolve.jvm.JvmOverloadFilter
import org.jetbrains.kotlin.resolve.jvm.JvmTypeSpecificityComparator
import org.jetbrains.kotlin.resolve.jvm.RuntimeAssertionsTypeChecker
import org.jetbrains.kotlin.resolve.jvm.*
import org.jetbrains.kotlin.resolve.jvm.checkers.*
import org.jetbrains.kotlin.resolve.lazy.DelegationFilter
import org.jetbrains.kotlin.synthetic.JavaSyntheticConstructorsProvider
......@@ -86,7 +83,9 @@ object JvmPlatformConfigurator : PlatformConfigurator(
platformToKotlinClassMap = JavaToKotlinClassMap.INSTANCE,
delegationFilter = JvmDelegationFilter
delegationFilter = JvmDelegationFilter,
overridesBackwardCompatibilityHelper = JvmOverridesBackwardCompatibilityHelper
) {
override fun configureModuleComponents(container: StorageComponentContainer) {
container.useImpl<JvmReflectionAPICallChecker>()
......
......@@ -48,9 +48,14 @@ import static org.jetbrains.kotlin.resolve.OverridingUtil.OverrideCompatibilityI
public class OverrideResolver {
private final BindingTrace trace;
private final OverridesBackwardCompatibilityHelper overridesBackwardCompatibilityHelper;
public OverrideResolver(@NotNull BindingTrace trace) {
public OverrideResolver(
@NotNull BindingTrace trace,
@NotNull OverridesBackwardCompatibilityHelper overridesBackwardCompatibilityHelper
) {
this.trace = trace;
this.overridesBackwardCompatibilityHelper = overridesBackwardCompatibilityHelper;
}
public void check(@NotNull TopDownAnalysisContext c) {
......@@ -650,7 +655,7 @@ public class OverrideResolver {
}
});
}
else if (!overriddenDescriptors.isEmpty()) {
else if (!overriddenDescriptors.isEmpty() && !overridesBackwardCompatibilityHelper.overrideCanBeOmitted(declared)) {
CallableMemberDescriptor overridden = overriddenDescriptors.iterator().next();
trace.report(VIRTUAL_MEMBER_HIDDEN.on(member, declared, overridden, overridden.getContainingDeclaration()));
}
......
/*
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.resolve
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
interface OverridesBackwardCompatibilityHelper {
fun overrideCanBeOmitted(overridingDescriptor: CallableMemberDescriptor): Boolean
object DEFAULT : OverridesBackwardCompatibilityHelper {
override fun overrideCanBeOmitted(overridingDescriptor: CallableMemberDescriptor): Boolean =
false
}
}
......@@ -51,7 +51,8 @@ abstract class TargetPlatform(val platformName: String) {
override val platformConfigurator =
object : PlatformConfigurator(
DynamicTypesSettings(), listOf(), listOf(), listOf(), listOf(), listOf(),
IdentifierChecker.DEFAULT, OverloadFilter.DEFAULT, PlatformToKotlinClassMap.EMPTY, DelegationFilter.DEFAULT
IdentifierChecker.DEFAULT, OverloadFilter.DEFAULT, PlatformToKotlinClassMap.EMPTY, DelegationFilter.DEFAULT,
OverridesBackwardCompatibilityHelper.DEFAULT
) {
override fun configureModuleComponents(container: StorageComponentContainer) {
container.useInstance(SyntheticScopes.Empty)
......@@ -97,7 +98,8 @@ abstract class PlatformConfigurator(
private val identifierChecker: IdentifierChecker,
private val overloadFilter: OverloadFilter,
private val platformToKotlinClassMap: PlatformToKotlinClassMap,
private val delegationFilter: DelegationFilter
private val delegationFilter: DelegationFilter,
private val overridesBackwardCompatibilityHelper: OverridesBackwardCompatibilityHelper
) {
private val declarationCheckers: List<DeclarationChecker> = DEFAULT_DECLARATION_CHECKERS + additionalDeclarationCheckers
private val callCheckers: List<CallChecker> = DEFAULT_CALL_CHECKERS + additionalCallCheckers
......@@ -117,6 +119,7 @@ abstract class PlatformConfigurator(
useInstance(overloadFilter)
useInstance(platformToKotlinClassMap)
useInstance(delegationFilter)
useInstance(overridesBackwardCompatibilityHelper)
}
}
......
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
abstract class Test1 : Map<String, String> {
<!VIRTUAL_MEMBER_HIDDEN!>fun containsKey(key: String): Boolean<!> = TODO()
fun getOrDefault(key: String, defaultValue: String): String = TODO()
}
abstract class Test2 : MutableMap<String, String> {
fun replace(key: String, value: String): String? = TODO()
}
abstract class Test3 : java.util.AbstractMap<String, String>() {
<!VIRTUAL_MEMBER_HIDDEN!>fun containsKey(key: String): Boolean<!> = TODO()
fun replace(key: String, value: String): String? = TODO()
}
package
public abstract class Test1 : kotlin.collections.Map<kotlin.String, kotlin.String> {
public constructor Test1()
public abstract override /*1*/ /*fake_override*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public abstract override /*1*/ /*fake_override*/ val keys: kotlin.collections.Set<kotlin.String>
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ val values: kotlin.collections.Collection<kotlin.String>
public final override /*1*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
public final override /*1*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class Test2 : kotlin.collections.MutableMap<kotlin.String, kotlin.String> {
public constructor Test2()
public abstract override /*1*/ /*fake_override*/ val entries: kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.String, kotlin.String>>
public abstract override /*1*/ /*fake_override*/ val keys: kotlin.collections.MutableSet<kotlin.String>
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ val values: kotlin.collections.MutableCollection<kotlin.String>
public abstract override /*1*/ /*fake_override*/ fun clear(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun compute(/*0*/ p0: kotlin.String, /*1*/ p1: java.util.function.BiFunction<in kotlin.String, in kotlin.String?, out kotlin.String?>): kotlin.String?
public open override /*1*/ /*fake_override*/ fun computeIfAbsent(/*0*/ p0: kotlin.String, /*1*/ p1: java.util.function.Function<in kotlin.String, out kotlin.String>): kotlin.String
public open override /*1*/ /*fake_override*/ fun computeIfPresent(/*0*/ p0: kotlin.String, /*1*/ p1: java.util.function.BiFunction<in kotlin.String, in kotlin.String, out kotlin.String?>): kotlin.String?
public abstract override /*1*/ /*fake_override*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*fake_override*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun merge(/*0*/ p0: kotlin.String, /*1*/ p1: kotlin.String, /*2*/ p2: java.util.function.BiFunction<in kotlin.String, in kotlin.String, out kotlin.String?>): kotlin.String?
public abstract override /*1*/ /*fake_override*/ fun put(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public abstract override /*1*/ /*fake_override*/ fun putAll(/*0*/ from: kotlin.collections.Map<out kotlin.String, kotlin.String>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun putIfAbsent(/*0*/ p0: kotlin.String, /*1*/ p1: kotlin.String): kotlin.String?
public abstract override /*1*/ /*fake_override*/ fun remove(/*0*/ key: kotlin.String): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*fake_override*/ fun remove(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.Boolean
public final override /*1*/ fun replace(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun replace(/*0*/ p0: kotlin.String, /*1*/ p1: kotlin.String, /*2*/ p2: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun replaceAll(/*0*/ p0: java.util.function.BiFunction<in kotlin.String, in kotlin.String, out kotlin.String>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class Test3 : java.util.AbstractMap<kotlin.String, kotlin.String> {
public constructor Test3()
public abstract override /*1*/ /*fake_override*/ val entries: kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.String!, kotlin.String!>>
invisible_fake final override /*1*/ /*fake_override*/ var keySet: kotlin.collections.(Mutable)Set<kotlin.String!>!
public open override /*1*/ /*fake_override*/ val keys: kotlin.collections.MutableSet<kotlin.String!>
public open override /*1*/ /*fake_override*/ val size: kotlin.Int
invisible_fake final override /*1*/ /*fake_override*/ var values: kotlin.collections.(Mutable)Collection<kotlin.String!>!
public open override /*1*/ /*fake_override*/ val values: kotlin.collections.MutableCollection<kotlin.String!>
public open override /*1*/ /*fake_override*/ fun clear(): kotlin.Unit
protected/*protected and package*/ open override /*1*/ /*fake_override*/ fun clone(): kotlin.Any!
public open override /*1*/ /*fake_override*/ fun compute(/*0*/ p0: kotlin.String!, /*1*/ p1: java.util.function.BiFunction<in kotlin.String!, in kotlin.String?, out kotlin.String?>): kotlin.String?
public open override /*1*/ /*fake_override*/ fun computeIfAbsent(/*0*/ p0: kotlin.String!, /*1*/ p1: java.util.function.Function<in kotlin.String!, out kotlin.String!>): kotlin.String!
public open override /*1*/ /*fake_override*/ fun computeIfPresent(/*0*/ p0: kotlin.String!, /*1*/ p1: java.util.function.BiFunction<in kotlin.String!, in kotlin.String, out kotlin.String?>): kotlin.String?
public final override /*1*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String!): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String!, in kotlin.String!>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String!): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*fake_override*/ fun getOrDefault(/*0*/ key: kotlin.String!, /*1*/ defaultValue: kotlin.String!): kotlin.String!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun merge(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.String, /*2*/ p2: java.util.function.BiFunction<in kotlin.String, in kotlin.String, out kotlin.String?>): kotlin.String?
public open override /*1*/ /*fake_override*/ fun put(/*0*/ key: kotlin.String!, /*1*/ value: kotlin.String!): kotlin.String?
public open override /*1*/ /*fake_override*/ fun putAll(/*0*/ from: kotlin.collections.Map<out kotlin.String!, kotlin.String!>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun putIfAbsent(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.String!): kotlin.String?
public open override /*1*/ /*fake_override*/ fun remove(/*0*/ key: kotlin.String!): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*fake_override*/ fun remove(/*0*/ key: kotlin.String!, /*1*/ value: kotlin.String!): kotlin.Boolean
public final override /*1*/ fun replace(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun replace(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.String!, /*2*/ p2: kotlin.String!): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun replaceAll(/*0*/ p0: java.util.function.BiFunction<in kotlin.String!, in kotlin.String!, out kotlin.String!>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
// Default methods from Java interfaces are NOT overridden by delegation.
// So, in the example below 'TestNoDelegationToDefaultMethods#replace' implicitly overrides a method from 'java.util.Map' (which is ok),
// but not a method from 'WithDelegation' (would be an error).
open class WithDelegation(val m: Map<String, String>) : Map<String, String> by m
class TestNoDelegationToDefaultMethods(m: Map<String, String>): WithDelegation(m) {
<!VIRTUAL_MEMBER_HIDDEN!>fun containsKey(key: String): Boolean<!> = TODO()
fun getOrDefault(key: String, defaultValue: String): String = TODO()
fun replace(key: String, value: String): String? = TODO()
}
interface IBaseWithKotlinDeclaration : Map<String, String> {
fun replace(key: String, value: String): String?
}
abstract class WithDelegation2(val m: Map<String, String>) : Map<String, String> by m, IBaseWithKotlinDeclaration
abstract class TestNoDelegationToDefaultMethods2(m: Map<String, String>): WithDelegation2(m) {
<!VIRTUAL_MEMBER_HIDDEN!>fun containsKey(key: String): Boolean<!> = TODO()
fun getOrDefault(key: String, defaultValue: String): String = TODO()
// VIRTUAL_MEMBER_HIDDEN: hides member declaration inherited from a Kotlin interface
<!VIRTUAL_MEMBER_HIDDEN!>fun replace(key: String, value: String): String?<!> = TODO()
}
package
public interface IBaseWithKotlinDeclaration : kotlin.collections.Map<kotlin.String, kotlin.String> {
public abstract override /*1*/ /*fake_override*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public abstract override /*1*/ /*fake_override*/ val keys: kotlin.collections.Set<kotlin.String>
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ val values: kotlin.collections.Collection<kotlin.String>
public abstract override /*1*/ /*fake_override*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*fake_override*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public abstract fun replace(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class TestNoDelegationToDefaultMethods : WithDelegation {
public constructor TestNoDelegationToDefaultMethods(/*0*/ m: kotlin.collections.Map<kotlin.String, kotlin.String>)
public open override /*1*/ /*fake_override*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public open override /*1*/ /*fake_override*/ val keys: kotlin.collections.Set<kotlin.String>
public final override /*1*/ /*fake_override*/ val m: kotlin.collections.Map<kotlin.String, kotlin.String>
public open override /*1*/ /*fake_override*/ val size: kotlin.Int
public open override /*1*/ /*fake_override*/ val values: kotlin.collections.Collection<kotlin.String>
public final override /*1*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
public final override /*1*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public final fun replace(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class TestNoDelegationToDefaultMethods2 : WithDelegation2 {
public constructor TestNoDelegationToDefaultMethods2(/*0*/ m: kotlin.collections.Map<kotlin.String, kotlin.String>)
public open override /*1*/ /*fake_override*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public open override /*1*/ /*fake_override*/ val keys: kotlin.collections.Set<kotlin.String>
public final override /*1*/ /*fake_override*/ val m: kotlin.collections.Map<kotlin.String, kotlin.String>
public open override /*1*/ /*fake_override*/ val size: kotlin.Int
public open override /*1*/ /*fake_override*/ val values: kotlin.collections.Collection<kotlin.String>
public final override /*1*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
public final override /*1*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public final override /*1*/ fun replace(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class WithDelegation : kotlin.collections.Map<kotlin.String, kotlin.String> {
public constructor WithDelegation(/*0*/ m: kotlin.collections.Map<kotlin.String, kotlin.String>)
public open override /*1*/ /*delegation*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public open override /*1*/ /*delegation*/ val keys: kotlin.collections.Set<kotlin.String>
public final val m: kotlin.collections.Map<kotlin.String, kotlin.String>
public open override /*1*/ /*delegation*/ val size: kotlin.Int
public open override /*1*/ /*delegation*/ val values: kotlin.collections.Collection<kotlin.String>
public open override /*1*/ /*delegation*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public open override /*1*/ /*delegation*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public open override /*1*/ /*delegation*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*delegation*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*delegation*/ fun isEmpty(): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class WithDelegation2 : kotlin.collections.Map<kotlin.String, kotlin.String>, IBaseWithKotlinDeclaration {
public constructor WithDelegation2(/*0*/ m: kotlin.collections.Map<kotlin.String, kotlin.String>)
public open override /*2*/ /*delegation*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public open override /*2*/ /*delegation*/ val keys: kotlin.collections.Set<kotlin.String>
public final val m: kotlin.collections.Map<kotlin.String, kotlin.String>
public open override /*2*/ /*delegation*/ val size: kotlin.Int
public open override /*2*/ /*delegation*/ val values: kotlin.collections.Collection<kotlin.String>
public open override /*2*/ /*delegation*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public open override /*2*/ /*delegation*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public open override /*2*/ /*delegation*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*2*/ /*delegation*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*2*/ /*delegation*/ fun isEmpty(): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun replace(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
interface IBase : Map<String, String>
interface TestDerivedInterfaceHiding : IBase {
fun replace(key: String, value: String): String?
}
interface TestDerivedInterfaceDefault : IBase {
fun replace(key: String, value: String): String? = TODO()
}
package
public interface IBase : kotlin.collections.Map<kotlin.String, kotlin.String> {
public abstract override /*1*/ /*fake_override*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public abstract override /*1*/ /*fake_override*/ val keys: kotlin.collections.Set<kotlin.String>
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ val values: kotlin.collections.Collection<kotlin.String>
public abstract override /*1*/ /*fake_override*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*fake_override*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface TestDerivedInterfaceDefault : IBase {
public abstract override /*1*/ /*fake_override*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public abstract override /*1*/ /*fake_override*/ val keys: kotlin.collections.Set<kotlin.String>
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ val values: kotlin.collections.Collection<kotlin.String>
public abstract override /*1*/ /*fake_override*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*fake_override*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public open fun replace(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface TestDerivedInterfaceHiding : IBase {
public abstract override /*1*/ /*fake_override*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public abstract override /*1*/ /*fake_override*/ val keys: kotlin.collections.Set<kotlin.String>
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ val values: kotlin.collections.Collection<kotlin.String>
public abstract override /*1*/ /*fake_override*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*fake_override*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public abstract fun replace(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
interface IBaseWithKotlinDeclaration : Map<String, String> {
fun replace(key: String, value: String): String?
}
interface TestDerivedInterfaceHidingWithKotlinDeclaration : IBaseWithKotlinDeclaration {
// VIRTUAL_MEMBER_HIDDEN: hides member declaration inherited from a Kotlin interface
<!VIRTUAL_MEMBER_HIDDEN!>fun replace(key: String, value: String): String?<!>
}
interface TestDerivedInterfaceDefaultWithKotlinDeclaration : IBaseWithKotlinDeclaration {
// VIRTUAL_MEMBER_HIDDEN: hides member declaration inherited from a Kotlin interface
<!VIRTUAL_MEMBER_HIDDEN!>fun replace(key: String, value: String): String?<!> = TODO()
}
package
public interface IBaseWithKotlinDeclaration : kotlin.collections.Map<kotlin.String, kotlin.String> {
public abstract override /*1*/ /*fake_override*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public abstract override /*1*/ /*fake_override*/ val keys: kotlin.collections.Set<kotlin.String>
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ val values: kotlin.collections.Collection<kotlin.String>
public abstract override /*1*/ /*fake_override*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*fake_override*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public abstract fun replace(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface TestDerivedInterfaceDefaultWithKotlinDeclaration : IBaseWithKotlinDeclaration {
public abstract override /*1*/ /*fake_override*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public abstract override /*1*/ /*fake_override*/ val keys: kotlin.collections.Set<kotlin.String>
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ val values: kotlin.collections.Collection<kotlin.String>
public abstract override /*1*/ /*fake_override*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*fake_override*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public open override /*1*/ fun replace(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface TestDerivedInterfaceHidingWithKotlinDeclaration : IBaseWithKotlinDeclaration {
public abstract override /*1*/ /*fake_override*/ val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<kotlin.String, kotlin.String>>
public abstract override /*1*/ /*fake_override*/ val keys: kotlin.collections.Set<kotlin.String>
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ val values: kotlin.collections.Collection<kotlin.String>
public abstract override /*1*/ /*fake_override*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.PlatformDependent public open override /*1*/ /*fake_override*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public abstract override /*1*/ fun replace(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
class ControlFlowException : Exception("") {
fun fillInStackTrace() = this
}
\ No newline at end of file
package
public final class ControlFlowException : kotlin.Exception /* = java.lang.Exception */ {
public constructor ControlFlowException()
public open override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public open override /*1*/ /*fake_override*/ val message: kotlin.String?
public final override /*1*/ /*fake_override*/ fun addSuppressed(/*0*/ p0: kotlin.Throwable!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ fun fillInStackTrace(): ControlFlowException
public open override /*1*/ /*fake_override*/ fun getLocalizedMessage(): kotlin.String!
public open override /*1*/ /*fake_override*/ fun getStackTrace(): kotlin.Array<(out) java.lang.StackTraceElement!>!
public final override /*1*/ /*fake_override*/ fun getSuppressed(): kotlin.Array<(out) kotlin.Throwable!>!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun initCause(/*0*/ p0: kotlin.Throwable!): kotlin.Throwable!
public open override /*1*/ /*fake_override*/ fun printStackTrace(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun printStackTrace(/*0*/ p0: java.io.PrintStream!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun printStackTrace(/*0*/ p0: java.io.PrintWriter!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun setStackTrace(/*0*/ p0: kotlin.Array<(out) java.lang.StackTraceElement!>!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
enum class TestEnum {
ENTRY;
<!VIRTUAL_MEMBER_HIDDEN!>fun getDeclaringClass()<!> {}
<!VIRTUAL_MEMBER_HIDDEN!>fun finalize()<!> {}
}
class TestFinalize {
fun finalize() {}
}
package
public final enum class TestEnum : kotlin.Enum<TestEnum> {
enum entry ENTRY
private constructor TestEnum()
public final override /*1*/ /*fake_override*/ val name: kotlin.String
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: TestEnum): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
public final override /*1*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): kotlin.Unit
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): TestEnum
public final /*synthesized*/ fun values(): kotlin.Array<TestEnum>
}
public final class TestFinalize {
public constructor TestFinalize()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun finalize(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
class MyHashMap : java.util.HashMap<String, String>() {
fun getOrDefault(key: String, defaultValue: String): String = TODO()
}
\ No newline at end of file
package
public final class MyHashMap : java.util.HashMap<kotlin.String, kotlin.String> {
public constructor MyHashMap()
public open override /*1*/ /*fake_override*/ val entries: kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.String, kotlin.String>>
invisible_fake final override /*1*/ /*fake_override*/ var entrySet: kotlin.collections.(Mutable)Set<kotlin.collections.(Mutable)Map.(Mutable)Entry<kotlin.String!, kotlin.String!>!>!
invisible_fake final override /*1*/ /*fake_override*/ var keySet: kotlin.collections.(Mutable)Set<kotlin.String!>!
public open override /*1*/ /*fake_override*/ val keys: kotlin.collections.MutableSet<kotlin.String>
invisible_fake final override /*1*/ /*fake_override*/ val loadFactor: kotlin.Float
invisible_fake final override /*1*/ /*fake_override*/ var modCount: kotlin.Int
invisible_fake final override /*1*/ /*fake_override*/ var size: kotlin.Int
public open override /*1*/ /*fake_override*/ val size: kotlin.Int
invisible_fake final override /*1*/ /*fake_override*/ var table: kotlin.Array<(out) java.util.HashMap.Node<kotlin.String!, kotlin.String!>!>!
invisible_fake final override /*1*/ /*fake_override*/ var threshold: kotlin.Int
invisible_fake final override /*1*/ /*fake_override*/ var values: kotlin.collections.(Mutable)Collection<kotlin.String!>!
public open override /*1*/ /*fake_override*/ val values: kotlin.collections.MutableCollection<kotlin.String>
invisible_fake open override /*1*/ /*fake_override*/ fun afterNodeAccess(/*0*/ p0: java.util.HashMap.Node<kotlin.String!, kotlin.String!>!): kotlin.Unit
invisible_fake open override /*1*/ /*fake_override*/ fun afterNodeInsertion(/*0*/ p0: kotlin.Boolean): kotlin.Unit
invisible_fake open override /*1*/ /*fake_override*/ fun afterNodeRemoval(/*0*/ p0: java.util.HashMap.Node<kotlin.String!, kotlin.String!>!): kotlin.Unit
invisible_fake final override /*1*/ /*fake_override*/ fun capacity(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun clear(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
public open override /*1*/ /*fake_override*/ fun compute(/*0*/ p0: kotlin.String, /*1*/ p1: java.util.function.BiFunction<in kotlin.String, in kotlin.String?, out kotlin.String?>): kotlin.String?
public open override /*1*/ /*fake_override*/ fun computeIfAbsent(/*0*/ p0: kotlin.String, /*1*/ p1: java.util.function.Function<in kotlin.String, out kotlin.String>): kotlin.String
public open override /*1*/ /*fake_override*/ fun computeIfPresent(/*0*/ p0: kotlin.String, /*1*/ p1: java.util.function.BiFunction<in kotlin.String, in kotlin.String, out kotlin.String?>): kotlin.String?
public open override /*1*/ /*fake_override*/ fun containsKey(/*0*/ key: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.String, in kotlin.String>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.String): kotlin.String?
invisible_fake final override /*1*/ /*fake_override*/ fun getNode(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Any!): java.util.HashMap.Node<kotlin.String!, kotlin.String!>!
public final override /*1*/ fun getOrDefault(/*0*/ key: kotlin.String, /*1*/ defaultValue: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
invisible_fake open override /*1*/ /*fake_override*/ fun internalWriteEntries(/*0*/ p0: java.io.ObjectOutputStream!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
invisible_fake final override /*1*/ /*fake_override*/ fun loadFactor(): kotlin.Float
public open override /*1*/ /*fake_override*/ fun merge(/*0*/ p0: kotlin.String, /*1*/ p1: kotlin.String, /*2*/ p2: java.util.function.BiFunction<in kotlin.String, in kotlin.String, out kotlin.String?>): kotlin.String?
invisible_fake open override /*1*/ /*fake_override*/ fun newNode(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.String!, /*2*/ p2: kotlin.String!, /*3*/ p3: java.util.HashMap.Node<kotlin.String!, kotlin.String!>!): java.util.HashMap.Node<kotlin.String!, kotlin.String!>!
invisible_fake open override /*1*/ /*fake_override*/ fun newTreeNode(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.String!, /*2*/ p2: kotlin.String!, /*3*/ p3: java.util.HashMap.Node<kotlin.String!, kotlin.String!>!): java.util.HashMap.TreeNode<kotlin.String!, kotlin.String!>!
public open override /*1*/ /*fake_override*/ fun put(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun putAll(/*0*/ from: kotlin.collections.Map<out kotlin.String, kotlin.String>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun putIfAbsent(/*0*/ p0: kotlin.String, /*1*/ p1: kotlin.String): kotlin.String?
invisible_fake final override /*1*/ /*fake_override*/ fun putMapEntries(/*0*/ p0: (kotlin.collections.MutableMap<out kotlin.String!, out kotlin.String!>..kotlin.collections.Map<out kotlin.String!, kotlin.String!>?), /*1*/ p1: kotlin.Boolean): kotlin.Unit
invisible_fake final override /*1*/ /*fake_override*/ fun putVal(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.String!, /*2*/ p2: kotlin.String!, /*3*/ p3: kotlin.Boolean, /*4*/ p4: kotlin.Boolean): kotlin.String!
invisible_fake open override /*1*/ /*fake_override*/ fun readObject(/*0*/ p0: java.io.ObjectInputStream!): kotlin.Unit
invisible_fake open override /*1*/ /*fake_override*/ fun reinitialize(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun remove(/*0*/ key: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun remove(/*0*/ key: kotlin.String, /*1*/ value: kotlin.String): kotlin.Boolean
invisible_fake final override /*1*/ /*fake_override*/ fun removeNode(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Any!, /*2*/ p2: kotlin.Any!, /*3*/ p3: kotlin.Boolean, /*4*/ p4: kotlin.Boolean): java.util.HashMap.Node<kotlin.String!, kotlin.String!>!
public open override /*1*/ /*fake_override*/ fun replace(/*0*/ p0: kotlin.String, /*1*/ p1: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun replace(/*0*/ p0: kotlin.String, /*1*/ p1: kotlin.String, /*2*/ p2: kotlin.String): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun replaceAll(/*0*/ p0: java.util.function.BiFunction<in kotlin.String, in kotlin.String, out kotlin.String>): kotlin.Unit
invisible_fake open override /*1*/ /*fake_override*/ fun replacementNode(/*0*/ p0: java.util.HashMap.Node<kotlin.String!, kotlin.String!>!, /*1*/ p1: java.util.HashMap.Node<kotlin.String!, kotlin.String!>!): java.util.HashMap.Node<kotlin.String!, kotlin.String!>!
invisible_fake open override /*1*/ /*fake_override*/ fun replacementTreeNode(/*0*/ p0: java.util.HashMap.Node<kotlin.String!, kotlin.String!>!, /*1*/ p1: java.util.HashMap.Node<kotlin.String!, kotlin.String!>!): java.util.HashMap.TreeNode<kotlin.String!, kotlin.String!>!
invisible_fake final override /*1*/ /*fake_override*/ fun resize(): kotlin.Array<(out) java.util.HashMap.Node<kotlin.String!, kotlin.String!>!>!
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
invisible_fake final override /*1*/ /*fake_override*/ fun treeifyBin(/*0*/ p0: kotlin.Array<(out) java.util.HashMap.Node<kotlin.String!, kotlin.String!>!>!, /*1*/ p1: kotlin.Int): kotlin.Unit
invisible_fake open override /*1*/ /*fake_override*/ fun writeObject(/*0*/ p0: java.io.ObjectOutputStream!): kotlin.Unit
}
......@@ -7,8 +7,7 @@ class A : java.util.ArrayList<String>() {
}
class A1 : java.util.ArrayList<String>() {
// TODO: should be allowed
<!VIRTUAL_MEMBER_HIDDEN!>fun stream(): java.util.stream.Stream<String><!> = super.<!DEPRECATION_ERROR!>stream<!>()
fun stream(): java.util.stream.Stream<String> = super.<!DEPRECATION_ERROR!>stream<!>()
}
class B : <!DEPRECATION_ERROR!>Throwable<!>("", null, false, false)
......
......@@ -196,5 +196,56 @@ public class DiagnosticsWithJava8TestGenerated extends AbstractDiagnosticsWithFu
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/unsupportedFeature.kt");
doTest(fileName);
}
@TestMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/backwardCompatibility")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class BackwardCompatibility extends AbstractDiagnosticsWithFullJdkTest {
public void testAllFilesPresentInBackwardCompatibility() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/backwardCompatibility"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true);
}
@TestMetadata("basic.kt")
public void testBasic() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/backwardCompatibility/basic.kt");
doTest(fileName);
}
@TestMetadata("delegation.kt")
public void testDelegation() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/backwardCompatibility/delegation.kt");
doTest(fileName);
}
@TestMetadata("derivedInterfaces.kt")
public void testDerivedInterfaces() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/backwardCompatibility/derivedInterfaces.kt");
doTest(fileName);
}
@TestMetadata("derivedInterfacesWithKotlinFun.kt")
public void testDerivedInterfacesWithKotlinFun() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/backwardCompatibility/derivedInterfacesWithKotlinFun.kt");
doTest(fileName);
}
@TestMetadata("fillInStackTrace.kt")
public void testFillInStackTrace() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/backwardCompatibility/fillInStackTrace.kt");
doTest(fileName);
}
@TestMetadata("finalize.kt")
public void testFinalize() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/backwardCompatibility/finalize.kt");
doTest(fileName);
}
@TestMetadata("hashMapGetOrDefault.kt")
public void testHashMapGetOrDefault() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/backwardCompatibility/hashMapGetOrDefault.kt");
doTest(fileName);
}
}
}
}
......@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.js.resolve.diagnostics.*
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap
import org.jetbrains.kotlin.resolve.IdentifierChecker
import org.jetbrains.kotlin.resolve.OverloadFilter
import org.jetbrains.kotlin.resolve.OverridesBackwardCompatibilityHelper
import org.jetbrains.kotlin.resolve.PlatformConfigurator
import org.jetbrains.kotlin.resolve.calls.checkers.ReifiedTypeParameterSubstitutionChecker
import org.jetbrains.kotlin.resolve.checkers.HeaderImplDeclarationChecker
......@@ -47,7 +48,8 @@ object JsPlatformConfigurator : PlatformConfigurator(
identifierChecker = IdentifierChecker.DEFAULT,
overloadFilter = OverloadFilter.DEFAULT,
platformToKotlinClassMap = PlatformToKotlinClassMap.EMPTY,
delegationFilter = DelegationFilter.DEFAULT
delegationFilter = DelegationFilter.DEFAULT,
overridesBackwardCompatibilityHelper = OverridesBackwardCompatibilityHelper.DEFAULT
) {
override fun configureModuleComponents(container: StorageComponentContainer) {
container.useImpl<JsCallChecker>()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册