org.jetbrains.jet.lang.descriptors.impl
Class FunctionDescriptorImpl

java.lang.Object
  extended by org.jetbrains.jet.lang.descriptors.annotations.AnnotatedImpl
      extended by org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorImpl
          extended by org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorNonRootImpl
              extended by org.jetbrains.jet.lang.descriptors.impl.FunctionDescriptorImpl
All Implemented Interfaces:
Annotated, CallableDescriptor, CallableMemberDescriptor, DeclarationDescriptor, DeclarationDescriptorNonRoot, DeclarationDescriptorWithVisibility, FunctionDescriptor, MemberDescriptor, Named
Direct Known Subclasses:
ConstructorDescriptorImpl, ExpressionAsFunctionDescriptor, ScriptCodeDescriptor, SimpleFunctionDescriptorImpl

public abstract class FunctionDescriptorImpl
extends DeclarationDescriptorNonRootImpl
implements FunctionDescriptor


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor
CallableMemberDescriptor.Kind
 
Field Summary
protected  ReceiverParameterDescriptor expectedThisObject
           
protected  Modality modality
           
protected  java.util.Set<FunctionDescriptor> overriddenFunctions
           
protected  java.util.List<TypeParameterDescriptor> typeParameters
           
protected  JetType unsubstitutedReturnType
           
protected  java.util.List<ValueParameterDescriptor> unsubstitutedValueParameters
           
protected  Visibility visibility
           
 
Constructor Summary
protected FunctionDescriptorImpl(DeclarationDescriptor containingDeclaration, FunctionDescriptor original, java.util.List<AnnotationDescriptor> annotations, Name name, CallableMemberDescriptor.Kind kind)
           
protected FunctionDescriptorImpl(DeclarationDescriptor containingDeclaration, java.util.List<AnnotationDescriptor> annotations, Name name, CallableMemberDescriptor.Kind kind)
           
 
Method Summary
<R,D> R
accept(DeclarationDescriptorVisitor<R,D> visitor, D data)
           
 void addOverriddenDescriptor(CallableMemberDescriptor overriddenFunction)
           
protected abstract  FunctionDescriptorImpl createSubstitutedCopy(DeclarationDescriptor newOwner, boolean preserveOriginal, CallableMemberDescriptor.Kind kind)
           
protected  FunctionDescriptor doSubstitute(TypeSubstitutor originalSubstitutor, DeclarationDescriptor newOwner, Modality newModality, Visibility newVisibility, boolean preserveOriginal, boolean copyOverrides, CallableMemberDescriptor.Kind kind)
           
 ReceiverParameterDescriptor getExpectedThisObject()
           
 CallableMemberDescriptor.Kind getKind()
          Is this a real function or function projection.
 Modality getModality()
           
 FunctionDescriptor getOriginal()
           
 java.util.Set<? extends FunctionDescriptor> getOverriddenDescriptors()
           
 ReceiverParameterDescriptor getReceiverParameter()
           
 JetType getReturnType()
          Method may return null for not yet fully initialized object or if error occurred.
 java.util.List<TypeParameterDescriptor> getTypeParameters()
           
 java.util.List<ValueParameterDescriptor> getValueParameters()
           
 Visibility getVisibility()
           
protected  FunctionDescriptorImpl initialize(JetType receiverParameterType, ReceiverParameterDescriptor expectedThisObject, java.util.List<? extends TypeParameterDescriptor> typeParameters, java.util.List<ValueParameterDescriptor> unsubstitutedValueParameters, JetType unsubstitutedReturnType, Modality modality, Visibility visibility)
           
 void setReturnType(JetType unsubstitutedReturnType)
           
 void setVisibility(Visibility visibility)
           
 FunctionDescriptor substitute(TypeSubstitutor originalSubstitutor)
           
 
Methods inherited from class org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorNonRootImpl
getContainingDeclaration
 
Methods inherited from class org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorImpl
acceptVoid, getName, toString
 
Methods inherited from class org.jetbrains.jet.lang.descriptors.annotations.AnnotatedImpl
getAnnotations
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.jetbrains.jet.lang.descriptors.FunctionDescriptor
copy, getContainingDeclaration
 
Methods inherited from interface org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
acceptVoid
 
Methods inherited from interface org.jetbrains.jet.lang.descriptors.annotations.Annotated
getAnnotations
 
Methods inherited from interface org.jetbrains.jet.lang.descriptors.Named
getName
 

Field Detail

typeParameters

protected java.util.List<TypeParameterDescriptor> typeParameters

unsubstitutedValueParameters

protected java.util.List<ValueParameterDescriptor> unsubstitutedValueParameters

unsubstitutedReturnType

protected JetType unsubstitutedReturnType

expectedThisObject

protected ReceiverParameterDescriptor expectedThisObject

modality

protected Modality modality

visibility

protected Visibility visibility

overriddenFunctions

protected final java.util.Set<FunctionDescriptor> overriddenFunctions
Constructor Detail

FunctionDescriptorImpl

protected FunctionDescriptorImpl(@NotNull
                                 DeclarationDescriptor containingDeclaration,
                                 @NotNull
                                 java.util.List<AnnotationDescriptor> annotations,
                                 @NotNull
                                 Name name,
                                 @NotNull
                                 CallableMemberDescriptor.Kind kind)

FunctionDescriptorImpl

protected FunctionDescriptorImpl(@NotNull
                                 DeclarationDescriptor containingDeclaration,
                                 @NotNull
                                 FunctionDescriptor original,
                                 @NotNull
                                 java.util.List<AnnotationDescriptor> annotations,
                                 @NotNull
                                 Name name,
                                 @NotNull
                                 CallableMemberDescriptor.Kind kind)
Method Detail

initialize

protected FunctionDescriptorImpl initialize(@Nullable
                                            JetType receiverParameterType,
                                            @Nullable
                                            ReceiverParameterDescriptor expectedThisObject,
                                            @NotNull
                                            java.util.List<? extends TypeParameterDescriptor> typeParameters,
                                            @NotNull
                                            java.util.List<ValueParameterDescriptor> unsubstitutedValueParameters,
                                            @Nullable
                                            JetType unsubstitutedReturnType,
                                            @Nullable
                                            Modality modality,
                                            @NotNull
                                            Visibility visibility)

setVisibility

public void setVisibility(@NotNull
                          Visibility visibility)

setReturnType

public void setReturnType(@NotNull
                          JetType unsubstitutedReturnType)

getReceiverParameter

@Nullable
public ReceiverParameterDescriptor getReceiverParameter()
Specified by:
getReceiverParameter in interface CallableDescriptor

getExpectedThisObject

@Nullable
public ReceiverParameterDescriptor getExpectedThisObject()
Specified by:
getExpectedThisObject in interface CallableDescriptor

getOverriddenDescriptors

@NotNull
public java.util.Set<? extends FunctionDescriptor> getOverriddenDescriptors()
Specified by:
getOverriddenDescriptors in interface CallableDescriptor
Specified by:
getOverriddenDescriptors in interface CallableMemberDescriptor
Specified by:
getOverriddenDescriptors in interface FunctionDescriptor

getModality

@NotNull
public Modality getModality()
Specified by:
getModality in interface MemberDescriptor

getVisibility

@NotNull
public Visibility getVisibility()
Specified by:
getVisibility in interface DeclarationDescriptorWithVisibility
Specified by:
getVisibility in interface MemberDescriptor

addOverriddenDescriptor

public void addOverriddenDescriptor(@NotNull
                                    CallableMemberDescriptor overriddenFunction)
Specified by:
addOverriddenDescriptor in interface CallableMemberDescriptor

getTypeParameters

@NotNull
public java.util.List<TypeParameterDescriptor> getTypeParameters()
Specified by:
getTypeParameters in interface CallableDescriptor

getValueParameters

@NotNull
public java.util.List<ValueParameterDescriptor> getValueParameters()
Specified by:
getValueParameters in interface CallableDescriptor

getReturnType

public JetType getReturnType()
Description copied from interface: CallableDescriptor
Method may return null for not yet fully initialized object or if error occurred.

Specified by:
getReturnType in interface CallableDescriptor

getOriginal

@NotNull
public FunctionDescriptor getOriginal()
Specified by:
getOriginal in interface CallableDescriptor
Specified by:
getOriginal in interface CallableMemberDescriptor
Specified by:
getOriginal in interface DeclarationDescriptor
Specified by:
getOriginal in interface FunctionDescriptor
Overrides:
getOriginal in class DeclarationDescriptorImpl
Returns:
The descriptor that corresponds to the original declaration of this element. A descriptor can be obtained from its original by substituting type arguments (of the declaring class or of the element itself). returns this object if the current descriptor is original itself

getKind

public CallableMemberDescriptor.Kind getKind()
Description copied from interface: CallableMemberDescriptor
Is this a real function or function projection.

Specified by:
getKind in interface CallableMemberDescriptor

substitute

public final FunctionDescriptor substitute(@NotNull
                                           TypeSubstitutor originalSubstitutor)
Specified by:
substitute in interface CallableDescriptor
Specified by:
substitute in interface DeclarationDescriptor
Specified by:
substitute in interface FunctionDescriptor

doSubstitute

protected FunctionDescriptor doSubstitute(TypeSubstitutor originalSubstitutor,
                                          DeclarationDescriptor newOwner,
                                          Modality newModality,
                                          Visibility newVisibility,
                                          boolean preserveOriginal,
                                          boolean copyOverrides,
                                          CallableMemberDescriptor.Kind kind)

createSubstitutedCopy

protected abstract FunctionDescriptorImpl createSubstitutedCopy(DeclarationDescriptor newOwner,
                                                                boolean preserveOriginal,
                                                                CallableMemberDescriptor.Kind kind)

accept

public <R,D> R accept(DeclarationDescriptorVisitor<R,D> visitor,
                      D data)
Specified by:
accept in interface DeclarationDescriptor