Create SyntheticMemberDescriptor interface

Implement this interface by sam adapters/constructors and use it in navigation

 #KT-11708 Fixed
This commit is contained in:
Pavel V. Talanov
2016-06-20 18:16:51 +03:00
parent 4087e650aa
commit bafe8e55ce
15 changed files with 106 additions and 48 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
* 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.
@@ -16,10 +16,9 @@
package org.jetbrains.kotlin.load.java.descriptors;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
import org.jetbrains.kotlin.descriptors.synthetic.SyntheticMemberDescriptor;
public interface SamAdapterDescriptor<D extends FunctionDescriptor> extends FunctionDescriptor, JavaCallableMemberDescriptor {
@NotNull
D getOriginForSam();
public interface SamAdapterDescriptor<D extends FunctionDescriptor> extends FunctionDescriptor, JavaCallableMemberDescriptor,
SyntheticMemberDescriptor<D> {
}
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
* 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.
@@ -16,14 +16,15 @@
package org.jetbrains.kotlin.load.java.descriptors
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
import org.jetbrains.kotlin.descriptors.synthetic.SyntheticMemberDescriptor
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindExclude
class SamConstructorDescriptor(
containingDeclaration: DeclarationDescriptor,
samInterface: JavaClassDescriptor
private val samInterface: JavaClassDescriptor
) : SimpleFunctionDescriptorImpl(
containingDeclaration,
null,
@@ -31,7 +32,10 @@ class SamConstructorDescriptor(
samInterface.name,
CallableMemberDescriptor.Kind.SYNTHESIZED,
samInterface.source
)
), SyntheticMemberDescriptor<JavaClassDescriptor> {
override val baseDescriptorForSynthetic: JavaClassDescriptor
get() = samInterface
}
object SamConstructorDescriptorKindExclude : DescriptorKindExclude() {
override fun excludes(descriptor: DeclarationDescriptor) = descriptor is SamConstructorDescriptor