Add utility InlineUtil.isInline instead of interface method in SimpleFunctionDescriptor

Also fix some warnings and reformat along the way
This commit is contained in:
Alexander Udalov
2015-04-15 18:52:49 +03:00
parent 9ed8ad8dd4
commit 4a2fac6f40
16 changed files with 113 additions and 158 deletions
@@ -19,10 +19,7 @@ package org.jetbrains.kotlin.builtins;
import kotlin.KotlinPackage;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.descriptors.CallableDescriptor;
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor;
import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.descriptors.annotations.Annotated;
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.kotlin.resolve.DescriptorUtils;
@@ -46,6 +43,10 @@ public class InlineUtil {
KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(type);
}
public static boolean isInline(@Nullable DeclarationDescriptor descriptor) {
return descriptor instanceof SimpleFunctionDescriptor && getInlineType(descriptor).isInline();
}
@NotNull
public static InlineStrategy getInlineType(@NotNull DeclarationDescriptor descriptor) {
ClassDescriptor inlineAnnotation = KotlinBuiltIns.getInstance().getInlineClassAnnotation();
@@ -17,13 +17,11 @@
package org.jetbrains.kotlin.descriptors;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.builtins.InlineStrategy;
/**
* Simple functions are the ones with 'fun' keyword and function literals
*/
public interface SimpleFunctionDescriptor extends FunctionDescriptor {
@NotNull
@Override
SimpleFunctionDescriptor copy(DeclarationDescriptor newOwner, Modality modality, Visibility visibility, Kind kind, boolean copyOverrides);
@@ -31,7 +29,4 @@ public interface SimpleFunctionDescriptor extends FunctionDescriptor {
@NotNull
@Override
SimpleFunctionDescriptor getOriginal();
@NotNull
InlineStrategy getInlineStrategy();
}
@@ -23,15 +23,10 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.types.JetType;
import org.jetbrains.kotlin.types.TypeSubstitutor;
import org.jetbrains.kotlin.builtins.InlineStrategy;
import org.jetbrains.kotlin.builtins.InlineUtil;
import java.util.List;
public class SimpleFunctionDescriptorImpl extends FunctionDescriptorImpl implements SimpleFunctionDescriptor {
private InlineStrategy inlineStrategy;
protected SimpleFunctionDescriptorImpl(
@NotNull DeclarationDescriptor containingDeclaration,
@Nullable SimpleFunctionDescriptor original,
@@ -54,7 +49,6 @@ public class SimpleFunctionDescriptorImpl extends FunctionDescriptorImpl impleme
return new SimpleFunctionDescriptorImpl(containingDeclaration, null, annotations, name, kind, source);
}
@NotNull
@Override
public SimpleFunctionDescriptorImpl initialize(
@@ -66,9 +60,8 @@ public class SimpleFunctionDescriptorImpl extends FunctionDescriptorImpl impleme
@Nullable Modality modality,
@NotNull Visibility visibility
) {
super.initialize(receiverParameterType, dispatchReceiverParameter, typeParameters, unsubstitutedValueParameters, unsubstitutedReturnType,
modality, visibility);
this.inlineStrategy = InlineUtil.getInlineType(this);
super.initialize(receiverParameterType, dispatchReceiverParameter, typeParameters, unsubstitutedValueParameters,
unsubstitutedReturnType, modality, visibility);
return this;
}
@@ -93,18 +86,20 @@ public class SimpleFunctionDescriptorImpl extends FunctionDescriptorImpl impleme
getName(),
kind,
SourceElement.NO_SOURCE
);
);
}
@NotNull
@Override
public SimpleFunctionDescriptor copy(DeclarationDescriptor newOwner, Modality modality, Visibility visibility, Kind kind, boolean copyOverrides) {
return (SimpleFunctionDescriptorImpl)doSubstitute(TypeSubstitutor.EMPTY, newOwner, modality, visibility, null, copyOverrides, kind);
}
@NotNull
@Override
public InlineStrategy getInlineStrategy() {
return inlineStrategy;
public SimpleFunctionDescriptor copy(
DeclarationDescriptor newOwner,
Modality modality,
Visibility visibility,
Kind kind,
boolean copyOverrides
) {
return (SimpleFunctionDescriptorImpl) doSubstitute(
TypeSubstitutor.EMPTY, newOwner, modality, visibility, null, copyOverrides, kind
);
}
}