Create special data flow info for ControlStructure. It will be used in new inference for special calls.
This commit is contained in:
+26
-14
@@ -189,23 +189,35 @@ public class ControlStructureTypingUtils {
|
|||||||
return function;
|
return function;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class ControlStructureDataFlowInfo extends MutableDataFlowInfoForArguments {
|
||||||
|
public final Map<ValueArgument, DataFlowInfo> dataFlowInfoForArgumentsMap;
|
||||||
|
|
||||||
|
ControlStructureDataFlowInfo(
|
||||||
|
@NotNull DataFlowInfo initialDataFlowInfo,
|
||||||
|
@NotNull Map<ValueArgument, DataFlowInfo> map
|
||||||
|
) {
|
||||||
|
super(initialDataFlowInfo);
|
||||||
|
dataFlowInfoForArgumentsMap = map;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateInfo(@NotNull ValueArgument valueArgument, @NotNull DataFlowInfo dataFlowInfo) {
|
||||||
|
dataFlowInfoForArgumentsMap.put(valueArgument, dataFlowInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public DataFlowInfo getInfo(@NotNull ValueArgument valueArgument) {
|
||||||
|
return dataFlowInfoForArgumentsMap.get(valueArgument);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static MutableDataFlowInfoForArguments createIndependentDataFlowInfoForArgumentsForCall(
|
private static MutableDataFlowInfoForArguments createIndependentDataFlowInfoForArgumentsForCall(
|
||||||
@NotNull DataFlowInfo initialDataFlowInfo,
|
@NotNull DataFlowInfo initialDataFlowInfo,
|
||||||
Map<ValueArgument, DataFlowInfo> dataFlowInfoForArgumentsMap
|
@NotNull Map<ValueArgument, DataFlowInfo> dataFlowInfoForArgumentsMap
|
||||||
) {
|
) {
|
||||||
return new MutableDataFlowInfoForArguments(initialDataFlowInfo) {
|
return new ControlStructureDataFlowInfo(initialDataFlowInfo, dataFlowInfoForArgumentsMap);
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateInfo(@NotNull ValueArgument valueArgument, @NotNull DataFlowInfo dataFlowInfo) {
|
|
||||||
dataFlowInfoForArgumentsMap.put(valueArgument, dataFlowInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public DataFlowInfo getInfo(@NotNull ValueArgument valueArgument) {
|
|
||||||
return dataFlowInfoForArgumentsMap.get(valueArgument);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MutableDataFlowInfoForArguments createDataFlowInfoForArgumentsForIfCall(
|
public static MutableDataFlowInfoForArguments createDataFlowInfoForArgumentsForIfCall(
|
||||||
|
|||||||
Reference in New Issue
Block a user