diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DependenciesCollector.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DependenciesCollector.kt index 5567c38fe12..9e34a6fabdb 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DependenciesCollector.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DependenciesCollector.kt @@ -1,17 +1,6 @@ /* - * Copyright 2010-2017 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. + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.ir.util @@ -19,6 +8,7 @@ package org.jetbrains.kotlin.ir.util import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.resolve.DescriptorUtils +import org.jetbrains.kotlin.resolve.calls.tasks.isDynamic import org.jetbrains.kotlin.resolve.descriptorUtil.getAllSuperClassifiers class DependenciesCollector { @@ -86,17 +76,19 @@ class DependenciesCollector { } } + private fun DeclarationDescriptor.isSyntheticJavaProperties() = + this is PropertyAccessorDescriptor && + this.kind == CallableMemberDescriptor.Kind.SYNTHESIZED && + containingDeclaration is ModuleDescriptor + private fun getTopLevelDeclaration(descriptor: DeclarationDescriptor): DeclarationDescriptor? { val containingDeclaration = descriptor.containingDeclaration return when (containingDeclaration) { is PackageFragmentDescriptor -> descriptor is ClassDescriptor -> getTopLevelDeclaration(containingDeclaration) else -> - if (descriptor is PropertyAccessorDescriptor && - descriptor.kind == CallableMemberDescriptor.Kind.SYNTHESIZED && - containingDeclaration is ModuleDescriptor - ) { - //skip synthetic java properties + if (descriptor.isDynamic() || descriptor.isSyntheticJavaProperties()) { + //skip null } else { throw AssertionError("Package or class expected: $containingDeclaration; for $descriptor")