001    /*
002     * Copyright 2010-2015 JetBrains s.r.o.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    
017    package org.jetbrains.kotlin.resolve.calls.model;
018    
019    import org.jetbrains.annotations.NotNull;
020    import org.jetbrains.annotations.Nullable;
021    import org.jetbrains.kotlin.descriptors.CallableDescriptor;
022    import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor;
023    import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor;
024    import org.jetbrains.kotlin.psi.Call;
025    import org.jetbrains.kotlin.psi.ValueArgument;
026    import org.jetbrains.kotlin.resolve.calls.results.ResolutionStatus;
027    import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind;
028    import org.jetbrains.kotlin.resolve.scopes.receivers.Receiver;
029    import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue;
030    import org.jetbrains.kotlin.types.KotlinType;
031    
032    import java.util.List;
033    import java.util.Map;
034    
035    public abstract class DelegatingResolvedCall<D extends CallableDescriptor> implements ResolvedCall<D> {
036        private final ResolvedCall<? extends D> resolvedCall;
037    
038        public DelegatingResolvedCall(@NotNull ResolvedCall<? extends D> resolvedCall) {
039            this.resolvedCall = resolvedCall;
040        }
041    
042        @NotNull
043        @Override
044        public ResolutionStatus getStatus() {
045            return resolvedCall.getStatus();
046        }
047    
048        @NotNull
049        @Override
050        public Call getCall() {
051            return resolvedCall.getCall();
052        }
053    
054        @NotNull
055        @Override
056        public D getCandidateDescriptor() {
057            return resolvedCall.getCandidateDescriptor();
058        }
059    
060        @NotNull
061        @Override
062        public D getResultingDescriptor() {
063            return resolvedCall.getResultingDescriptor();
064        }
065    
066        @Nullable
067        @Override
068        public Receiver getExtensionReceiver() {
069            return resolvedCall.getExtensionReceiver();
070        }
071    
072        @Nullable
073        @Override
074        public ReceiverValue getDispatchReceiver() {
075            return resolvedCall.getDispatchReceiver();
076        }
077    
078        @NotNull
079        @Override
080        public ExplicitReceiverKind getExplicitReceiverKind() {
081            return resolvedCall.getExplicitReceiverKind();
082        }
083    
084        @NotNull
085        @Override
086        public Map<ValueParameterDescriptor, ResolvedValueArgument> getValueArguments() {
087            return resolvedCall.getValueArguments();
088        }
089    
090        @NotNull
091        @Override
092        public ArgumentMapping getArgumentMapping(@NotNull ValueArgument valueArgument) {
093            return resolvedCall.getArgumentMapping(valueArgument);
094        }
095    
096        @Nullable
097        @Override
098        public List<ResolvedValueArgument> getValueArgumentsByIndex() {
099            return resolvedCall.getValueArgumentsByIndex();
100        }
101    
102        @NotNull
103        @Override
104        public Map<TypeParameterDescriptor, KotlinType> getTypeArguments() {
105            return resolvedCall.getTypeArguments();
106        }
107    
108        @NotNull
109        @Override
110        public DataFlowInfoForArguments getDataFlowInfoForArguments() {
111            return resolvedCall.getDataFlowInfoForArguments();
112        }
113    
114        @Override
115        public boolean isSafeCall() {
116            return resolvedCall.isSafeCall();
117        }
118    }