Create special data flow info for ControlStructure. It will be used in new inference for special calls.

This commit is contained in:
Stanislav Erokhin
2016-10-19 14:53:46 +03:00
parent dbe867e2c0
commit dce373b807
@@ -189,11 +189,17 @@ public class ControlStructureTypingUtils {
return function; return function;
} }
private static MutableDataFlowInfoForArguments createIndependentDataFlowInfoForArgumentsForCall( public static class ControlStructureDataFlowInfo extends MutableDataFlowInfoForArguments {
public final Map<ValueArgument, DataFlowInfo> dataFlowInfoForArgumentsMap;
ControlStructureDataFlowInfo(
@NotNull DataFlowInfo initialDataFlowInfo, @NotNull DataFlowInfo initialDataFlowInfo,
Map<ValueArgument, DataFlowInfo> dataFlowInfoForArgumentsMap @NotNull Map<ValueArgument, DataFlowInfo> map
) { ) {
return new MutableDataFlowInfoForArguments(initialDataFlowInfo) { super(initialDataFlowInfo);
dataFlowInfoForArgumentsMap = map;
}
@Override @Override
public void updateInfo(@NotNull ValueArgument valueArgument, @NotNull DataFlowInfo dataFlowInfo) { public void updateInfo(@NotNull ValueArgument valueArgument, @NotNull DataFlowInfo dataFlowInfo) {
@@ -205,7 +211,13 @@ public class ControlStructureTypingUtils {
public DataFlowInfo getInfo(@NotNull ValueArgument valueArgument) { public DataFlowInfo getInfo(@NotNull ValueArgument valueArgument) {
return dataFlowInfoForArgumentsMap.get(valueArgument); return dataFlowInfoForArgumentsMap.get(valueArgument);
} }
}; }
private static MutableDataFlowInfoForArguments createIndependentDataFlowInfoForArgumentsForCall(
@NotNull DataFlowInfo initialDataFlowInfo,
@NotNull Map<ValueArgument, DataFlowInfo> dataFlowInfoForArgumentsMap
) {
return new ControlStructureDataFlowInfo(initialDataFlowInfo, dataFlowInfoForArgumentsMap);
} }
public static MutableDataFlowInfoForArguments createDataFlowInfoForArgumentsForIfCall( public static MutableDataFlowInfoForArguments createDataFlowInfoForArgumentsForIfCall(