Saving mapping from SAM constructor to trait.
This commit is contained in:
+7
-4
@@ -343,11 +343,14 @@ public final class JavaFunctionResolver {
|
|||||||
PsiClass functionalInterface = namedMembers.getFunctionalInterface();
|
PsiClass functionalInterface = namedMembers.getFunctionalInterface();
|
||||||
if (functionalInterface != null) {
|
if (functionalInterface != null) {
|
||||||
ClassifierDescriptor classifier = ownerDescriptor.getMemberScope().getClassifier(functionName);
|
ClassifierDescriptor classifier = ownerDescriptor.getMemberScope().getClassifier(functionName);
|
||||||
if (classifier instanceof ClassDescriptor && SingleAbstractMethodUtils.isFunctionalInterface((ClassDescriptor) classifier)) {
|
if (classifier instanceof ClassDescriptor) {
|
||||||
|
ClassDescriptor klass = (ClassDescriptor) classifier;
|
||||||
|
|
||||||
SimpleFunctionDescriptor constructorFunction =
|
if (SingleAbstractMethodUtils.isFunctionalInterface(klass)) {
|
||||||
SingleAbstractMethodUtils.createConstructorFunction((ClassDescriptor) classifier);
|
SimpleFunctionDescriptor constructorFunction = SingleAbstractMethodUtils.createConstructorFunction(klass);
|
||||||
return Collections.<FunctionDescriptor>singleton(constructorFunction);
|
trace.record(BindingContext.SAM_CONSTRUCTOR_TO_TRAIT, constructorFunction, klass);
|
||||||
|
return Collections.<FunctionDescriptor>singleton(constructorFunction);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -255,6 +255,7 @@ public interface BindingContext {
|
|||||||
new BasicWritableSlice<DeclarationDescriptor, List<String>>(Slices.ONLY_REWRITE_TO_EQUAL, true);
|
new BasicWritableSlice<DeclarationDescriptor, List<String>>(Slices.ONLY_REWRITE_TO_EQUAL, true);
|
||||||
|
|
||||||
WritableSlice<CallableDescriptor, Boolean> IS_DECLARED_IN_JAVA = Slices.createSimpleSlice();
|
WritableSlice<CallableDescriptor, Boolean> IS_DECLARED_IN_JAVA = Slices.createSimpleSlice();
|
||||||
|
WritableSlice<SimpleFunctionDescriptor, ClassDescriptor> SAM_CONSTRUCTOR_TO_TRAIT = Slices.createSimpleSlice();
|
||||||
|
|
||||||
@SuppressWarnings("UnusedDeclaration")
|
@SuppressWarnings("UnusedDeclaration")
|
||||||
@Deprecated // This field is needed only for the side effects of its initializer
|
@Deprecated // This field is needed only for the side effects of its initializer
|
||||||
|
|||||||
Reference in New Issue
Block a user