Skip to content

Commit e82ca2f

Browse files
mralephcommit-bot@chromium.org
authored andcommitted
[fasta] Unconditionally enable asserts in const constructors
Based on feedback from the language team (dart-lang/language#447). Removal of CompilerOptions.enableAsserts is pending cleanup in DDK. Change-Id: Id515e91da3e31647941ce893b2cffc58894a1b1d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/108813 Commit-Queue: Vyacheslav Egorov <vegorov@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com>
1 parent e4eea58 commit e82ca2f

File tree

18 files changed

+64
-111
lines changed

18 files changed

+64
-111
lines changed

pkg/compiler/lib/src/ir/constants.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@ class Dart2jsConstantEvaluator extends ir.ConstantEvaluator {
1919

2020
Dart2jsConstantEvaluator(
2121
ir.TypeEnvironment typeEnvironment, ReportErrorFunction reportError,
22-
{bool enableAsserts,
23-
Map<String, String> environment: const {},
22+
{Map<String, String> environment: const {},
2423
bool supportReevaluationForTesting: false})
2524
: _supportReevaluationForTesting = supportReevaluationForTesting,
2625
super(const Dart2jsConstantsBackend(), environment, typeEnvironment,
27-
enableAsserts, new ErrorReporter(reportError));
26+
new ErrorReporter(reportError));
2827

2928
@override
3029
ErrorReporter get errorReporter => super.errorReporter;

pkg/compiler/lib/src/kernel/element_map_impl.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -760,9 +760,7 @@ class KernelToElementMapImpl implements KernelToElementMap, IrToElementMap {
760760
return _constantEvaluator ??= new Dart2jsConstantEvaluator(typeEnvironment,
761761
(ir.LocatedMessage message, List<ir.LocatedMessage> context) {
762762
reportLocatedMessage(reporter, message, context);
763-
},
764-
enableAsserts: options.enableUserAssertions,
765-
environment: _environment.toMap());
763+
}, environment: _environment.toMap());
766764
}
767765

768766
@override

pkg/compiler/lib/src/kernel/loader.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,7 @@ class KernelLoaderTask extends CompilerTask {
105105
_options.librariesSpecificationUri,
106106
dependencies,
107107
_options.packageConfig,
108-
experimentalFlags: _options.languageExperiments,
109-
enableAsserts: _options.enableUserAssertions);
108+
experimentalFlags: _options.languageExperiments);
110109
component = await fe.compile(
111110
initializedCompilerState,
112111
false,

pkg/dev_compiler/lib/src/kernel/constants.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class DevCompilerConstants {
2525
TypeEnvironment types, Map<String, String> declaredVariables)
2626
: _visitor = _ConstantVisitor(types.coreTypes),
2727
_evaluator = ConstantEvaluator(const DevCompilerConstantsBackend(),
28-
declaredVariables, types, false, const _ErrorReporter());
28+
declaredVariables, types, const _ErrorReporter());
2929

3030
/// Determines if an expression is constant.
3131
bool isConstant(Expression e) => _visitor.isConstant(e);

pkg/front_end/lib/src/api_prototype/compiler_options.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,8 @@ class CompilerOptions {
153153
/// If not specified, the default target is the VM.
154154
Target target;
155155

156-
/// Whether asserts in initializers in const constructors are checked during
157-
/// constant evaluation.
156+
/// Deprecated. Has no affect on front-end.
157+
// TODO(dartbug.com/37514) Remove this field once DDK removes its uses of it.
158158
bool enableAsserts = false;
159159

160160
/// Whether to show verbose messages (mainly for debugging and performance

pkg/front_end/lib/src/api_unstable/dart2js.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,7 @@ InitializedCompilerState initializeCompiler(
117117
Uri packagesFileUri,
118118
{List<Uri> dependencies,
119119
Map<ExperimentalFlag, bool> experimentalFlags,
120-
bool verify: false,
121-
bool enableAsserts: false}) {
120+
bool verify: false}) {
122121
linkedDependencies.sort((a, b) => a.toString().compareTo(b.toString()));
123122

124123
if (oldState != null &&
@@ -136,8 +135,7 @@ InitializedCompilerState initializeCompiler(
136135
..librariesSpecificationUri = librariesSpecificationUri
137136
..packagesFileUri = packagesFileUri
138137
..experimentalFlags = experimentalFlags
139-
..verify = verify
140-
..enableAsserts = enableAsserts;
138+
..verify = verify;
141139

142140
ProcessedOptions processedOpts = new ProcessedOptions(options: options);
143141

pkg/front_end/lib/src/base/processed_options.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,6 @@ class ProcessedOptions {
158158

159159
Uri get packagesUriRaw => _raw.packagesFileUri;
160160

161-
bool get enableAsserts => _raw.enableAsserts;
162-
163161
bool get verbose => _raw.verbose;
164162

165163
bool get verify => _raw.verify;

pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart

Lines changed: 43 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ part 'constant_collection_builders.dart';
6969
Component transformComponent(Component component, ConstantsBackend backend,
7070
Map<String, String> environmentDefines, ErrorReporter errorReporter,
7171
{bool keepFields: true,
72-
bool enableAsserts: false,
7372
bool evaluateAnnotations: true,
7473
bool desugarSets: false,
7574
bool errorOnUnevaluatedConstant: false,
@@ -83,7 +82,6 @@ Component transformComponent(Component component, ConstantsBackend backend,
8382
transformLibraries(component.libraries, backend, environmentDefines,
8483
typeEnvironment, errorReporter,
8584
keepFields: keepFields,
86-
enableAsserts: enableAsserts,
8785
desugarSets: desugarSets,
8886
errorOnUnevaluatedConstant: errorOnUnevaluatedConstant,
8987
evaluateAnnotations: evaluateAnnotations);
@@ -100,8 +98,7 @@ void transformLibraries(
10098
bool keepVariables: false,
10199
bool evaluateAnnotations: true,
102100
bool desugarSets: false,
103-
bool errorOnUnevaluatedConstant: false,
104-
bool enableAsserts: false}) {
101+
bool errorOnUnevaluatedConstant: false}) {
105102
final ConstantsTransformer constantsTransformer = new ConstantsTransformer(
106103
backend,
107104
environmentDefines,
@@ -111,7 +108,6 @@ void transformLibraries(
111108
desugarSets,
112109
errorOnUnevaluatedConstant,
113110
typeEnvironment,
114-
enableAsserts,
115111
errorReporter);
116112
for (final Library library in libraries) {
117113
constantsTransformer.convertLibrary(library);
@@ -155,10 +151,9 @@ class ConstantsTransformer extends Transformer {
155151
this.desugarSets,
156152
this.errorOnUnevaluatedConstant,
157153
this.typeEnvironment,
158-
bool enableAsserts,
159154
ErrorReporter errorReporter)
160-
: constantEvaluator = new ConstantEvaluator(backend, environmentDefines,
161-
typeEnvironment, enableAsserts, errorReporter,
155+
: constantEvaluator = new ConstantEvaluator(
156+
backend, environmentDefines, typeEnvironment, errorReporter,
162157
desugarSets: desugarSets,
163158
errorOnUnevaluatedConstant: errorOnUnevaluatedConstant);
164159

@@ -483,7 +478,6 @@ class ConstantEvaluator extends RecursiveVisitor<Constant> {
483478
final bool errorOnUnevaluatedConstant;
484479
final CoreTypes coreTypes;
485480
final TypeEnvironment typeEnvironment;
486-
final bool enableAsserts;
487481
final ErrorReporter errorReporter;
488482

489483
final bool desugarSets;
@@ -516,7 +510,7 @@ class ConstantEvaluator extends RecursiveVisitor<Constant> {
516510
bool get targetingJavaScript => numberSemantics == NumberSemantics.js;
517511

518512
ConstantEvaluator(this.backend, this.environmentDefines, this.typeEnvironment,
519-
this.enableAsserts, this.errorReporter,
513+
this.errorReporter,
520514
{this.desugarSets = false, this.errorOnUnevaluatedConstant = false})
521515
: numberSemantics = backend.numberSemantics,
522516
coreTypes = typeEnvironment.coreTypes,
@@ -1154,51 +1148,49 @@ class ConstantEvaluator extends RecursiveVisitor<Constant> {
11541148
}
11551149

11561150
void checkAssert(AssertStatement statement) {
1157-
if (enableAsserts) {
1158-
final Constant condition = _evaluateSubexpression(statement.condition);
1151+
final Constant condition = _evaluateSubexpression(statement.condition);
11591152

1160-
if (shouldBeUnevaluated) {
1161-
Expression message = null;
1162-
if (statement.message != null) {
1163-
enterLazy();
1164-
message = extract(_evaluateSubexpression(statement.message));
1165-
leaveLazy();
1153+
if (shouldBeUnevaluated) {
1154+
Expression message = null;
1155+
if (statement.message != null) {
1156+
enterLazy();
1157+
message = extract(_evaluateSubexpression(statement.message));
1158+
leaveLazy();
1159+
}
1160+
instanceBuilder.asserts.add(new AssertStatement(extract(condition),
1161+
message: message,
1162+
conditionStartOffset: statement.conditionStartOffset,
1163+
conditionEndOffset: statement.conditionEndOffset));
1164+
} else if (condition is BoolConstant) {
1165+
if (!condition.value) {
1166+
if (statement.message == null) {
1167+
report(statement.condition, messageConstEvalFailedAssertion);
11661168
}
1167-
instanceBuilder.asserts.add(new AssertStatement(extract(condition),
1168-
message: message,
1169-
conditionStartOffset: statement.conditionStartOffset,
1170-
conditionEndOffset: statement.conditionEndOffset));
1171-
} else if (condition is BoolConstant) {
1172-
if (!condition.value) {
1173-
if (statement.message == null) {
1174-
report(statement.condition, messageConstEvalFailedAssertion);
1175-
}
1176-
final Constant message = _evaluateSubexpression(statement.message);
1177-
if (shouldBeUnevaluated) {
1178-
instanceBuilder.asserts.add(new AssertStatement(extract(condition),
1179-
message: extract(message),
1180-
conditionStartOffset: statement.conditionStartOffset,
1181-
conditionEndOffset: statement.conditionEndOffset));
1182-
} else if (message is StringConstant) {
1183-
report(
1184-
statement.condition,
1185-
templateConstEvalFailedAssertionWithMessage
1186-
.withArguments(message.value));
1187-
} else {
1188-
report(
1189-
statement.message,
1190-
templateConstEvalInvalidType.withArguments(
1191-
message,
1192-
typeEnvironment.stringType,
1193-
message.getType(typeEnvironment)));
1194-
}
1169+
final Constant message = _evaluateSubexpression(statement.message);
1170+
if (shouldBeUnevaluated) {
1171+
instanceBuilder.asserts.add(new AssertStatement(extract(condition),
1172+
message: extract(message),
1173+
conditionStartOffset: statement.conditionStartOffset,
1174+
conditionEndOffset: statement.conditionEndOffset));
1175+
} else if (message is StringConstant) {
1176+
report(
1177+
statement.condition,
1178+
templateConstEvalFailedAssertionWithMessage
1179+
.withArguments(message.value));
1180+
} else {
1181+
report(
1182+
statement.message,
1183+
templateConstEvalInvalidType.withArguments(
1184+
message,
1185+
typeEnvironment.stringType,
1186+
message.getType(typeEnvironment)));
11951187
}
1196-
} else {
1197-
report(
1198-
statement.condition,
1199-
templateConstEvalInvalidType.withArguments(condition,
1200-
typeEnvironment.boolType, condition.getType(typeEnvironment)));
12011188
}
1189+
} else {
1190+
report(
1191+
statement.condition,
1192+
templateConstEvalInvalidType.withArguments(condition,
1193+
typeEnvironment.boolType, condition.getType(typeEnvironment)));
12021194
}
12031195
}
12041196

pkg/front_end/lib/src/fasta/kernel/kernel_target.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,6 @@ class KernelTarget extends TargetImplementation {
138138
final bool errorOnUnevaluatedConstant =
139139
CompilerContext.current.options.errorOnUnevaluatedConstant;
140140

141-
final bool enableAsserts = CompilerContext.current.options.enableAsserts;
142-
143141
final List<Object> clonedFormals = <Object>[];
144142

145143
KernelTarget(this.fileSystem, this.includeComments, DillTarget dillTarget,
@@ -786,7 +784,6 @@ class KernelTarget extends TargetImplementation {
786784
environmentDefines,
787785
environment,
788786
new KernelConstantErrorReporter(loader),
789-
enableAsserts: enableAsserts,
790787
desugarSets: !backendTarget.supportsSetLiterals,
791788
errorOnUnevaluatedConstant: errorOnUnevaluatedConstant);
792789
ticker.logMs("Evaluated constants");

pkg/front_end/tool/_fasta/command_line.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -313,8 +313,6 @@ ProcessedOptions analyzeCommandLine(
313313

314314
final bool noDefines = options["--no-defines"];
315315

316-
final bool enableAsserts = options["--enable-asserts"];
317-
318316
final bool verify = options["--verify"];
319317

320318
final bool dumpIr = options["--dump-ir"];
@@ -378,7 +376,6 @@ ProcessedOptions analyzeCommandLine(
378376
..packagesFileUri = packages
379377
..legacyMode = legacyMode
380378
..target = target
381-
..enableAsserts = enableAsserts
382379
..throwOnErrorsForDebugging = errorsAreFatal
383380
..throwOnWarningsForDebugging = warningsAreFatal
384381
..embedSourceText = !excludeSource
@@ -415,7 +412,6 @@ ProcessedOptions analyzeCommandLine(
415412
..packagesFileUri = packages
416413
..legacyMode = legacyMode
417414
..target = target
418-
..enableAsserts = enableAsserts
419415
..throwOnErrorsForDebugging = errorsAreFatal
420416
..throwOnWarningsForDebugging = warningsAreFatal
421417
..embedSourceText = !excludeSource

0 commit comments

Comments
 (0)