001    package org.jetbrains.jet.lang.resolve.calls.model;
002    
003    import org.jetbrains.annotations.NotNull;
004    import org.jetbrains.jet.lang.psi.ValueArgument;
005    import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
006    
007    public interface MutableDataFlowInfoForArguments extends DataFlowInfoForArguments {
008    
009        void setInitialDataFlowInfo(@NotNull DataFlowInfo dataFlowInfo);
010    
011        void updateInfo(@NotNull ValueArgument valueArgument, @NotNull DataFlowInfo dataFlowInfo);
012    
013        MutableDataFlowInfoForArguments WITHOUT_ARGUMENTS_CHECK = new MutableDataFlowInfoForArguments() {
014            private DataFlowInfo dataFlowInfo;
015    
016            @Override
017            public void setInitialDataFlowInfo(@NotNull DataFlowInfo dataFlowInfo) {
018                this.dataFlowInfo = dataFlowInfo;
019            }
020    
021            @Override
022            public void updateInfo(
023                    @NotNull ValueArgument valueArgument, @NotNull DataFlowInfo dataFlowInfo
024            ) {
025                throw new IllegalStateException();
026            }
027    
028            @NotNull
029            @Override
030            public DataFlowInfo getInfo(@NotNull ValueArgument valueArgument) {
031                throw new IllegalStateException();
032            }
033    
034            @NotNull
035            @Override
036            public DataFlowInfo getResultInfo() {
037                return dataFlowInfo;
038            }
039        };
040    }