[CFE] Handle unevaluated constants differently in constant evaluator
This for instance avoids an exponential blowup that would previously have occurred in certain cases. Change-Id: I258d8153e75f7059bca346826b5dec62cc1bac84 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/249000 Reviewed-by: Johnni Winther <johnniwinther@google.com> Reviewed-by: Joshua Litt <joshualitt@google.com> Reviewed-by: Aske Simon Christensen <askesc@google.com> Commit-Queue: Jens Johansen <jensj@google.com>
This commit is contained in:
committed by
Commit Bot
parent
ac586ff2a6
commit
3c8a679b46
@@ -25,7 +25,7 @@ import 'log.dart' show Logger, StdoutLogger, splitLines;
|
||||
|
||||
import 'multitest.dart' show MultitestTransformer, isError;
|
||||
|
||||
import 'expectation.dart' show Expectation, ExpectationSet;
|
||||
import 'expectation.dart' show Expectation, ExpectationGroup, ExpectationSet;
|
||||
|
||||
typedef Future<ChainContext> CreateContext(
|
||||
Chain suite, Map<String, String> environment);
|
||||
@@ -148,6 +148,14 @@ abstract class ChainContext {
|
||||
}
|
||||
final Set<Expectation> expectedOutcomes = processExpectedOutcomes(
|
||||
expectations.expectations(description.shortName), description);
|
||||
bool shouldSkip = false;
|
||||
for (Expectation expectation in expectedOutcomes) {
|
||||
if (expectation.group == ExpectationGroup.Skip) {
|
||||
shouldSkip = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (shouldSkip) continue;
|
||||
final StringBuffer sb = new StringBuffer();
|
||||
final Step? lastStep = steps.isNotEmpty ? steps.last : null;
|
||||
final Iterator<Step> iterator = steps.iterator;
|
||||
|
||||
Reference in New Issue
Block a user