Chromium Code Reviews
DescriptionFix bug in inferrer for the computation of callers: we need to keep track of what is the called node to ensure another call does not accidentally remove a caller.
The bug was in the following code:
Iterable<Element> untypedTargets = allFuctions.filter(selector.asUntyped);
Iterable<Element> typedTargets = allFuctions.filter(selector);
for (callee in untypedTargets) {
if (!typedTargets.contains(callee)) {
callee.removeCall(caller);
} else {
callee.addCall(caller);
}
}
The "removeCall" here is not correct because the relation caller-> callee could have been made by another call, with the same selector name but a different typedTargets set.
R=kasperl@google.com
Committed: https://code.google.com/p/dart/source/detail?r=27233
Patch Set 1 : #
Total comments: 2
Patch Set 2 : #
Messages
Total messages: 4 (0 generated)
|
|||||||||||||||||||||||||||||||||||||