Files
sdk/pkg/dev_compiler/test/expression_compiler/expression_compiler_test.dart
T
Nicholas Shahan 8968e0e2d6 [ddc] Remove unsound null safety option from tests
Change-Id: I1da8a572fc3556b03141a312375fa91bb3a8f358
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/386084
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Nate Biggs <natebiggs@google.com>
2025-01-28 09:24:00 -08:00

144 lines
3.9 KiB
Dart

// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:dev_compiler/src/compiler/module_builder.dart';
import 'package:test/test.dart';
import '../shared_test_options.dart';
import 'expression_compiler_suite.dart';
void main(List<String> args) {
for (var moduleFormat in [ModuleFormat.amd, ModuleFormat.ddc]) {
group('Module format: $moduleFormat |', () {
runTests(SetupCompilerOptions(
moduleFormat: moduleFormat,
args: args,
));
});
}
}
void runTests(SetupCompilerOptions setup) {
group('Expression compilations on the same expression compiler |', () {
var source = '''
main() {
}
void foo() {
// Breakpoint
}
''';
late ExpressionCompilerTestDriver driver;
setUp(() {
driver = ExpressionCompilerTestDriver(setup, source);
});
tearDown(() {
driver.delete();
});
test('successful expression compilations', () async {
var compiler = await driver.createCompiler();
await driver.check(
compiler: compiler,
scope: <String, String>{},
expression: 'true',
expectedResult: contains('return true;'));
await driver.check(
compiler: compiler,
scope: <String, String>{},
expression: 'false',
expectedResult: contains('return false;'));
});
test('some successful expression compilations', () async {
var compiler = await driver.createCompiler();
await driver.check(
compiler: compiler,
scope: <String, String>{},
expression: 'true',
expectedResult: contains('return true;'));
await driver.check(
compiler: compiler,
scope: <String, String>{},
expression: 'blah',
expectedError: "Undefined name 'blah'",
);
await driver.check(
compiler: compiler,
scope: <String, String>{},
expression: 'false',
expectedResult: contains('return false;'));
});
test('failing expression compilations', () async {
var compiler = await driver.createCompiler();
await driver.check(
compiler: compiler,
scope: <String, String>{},
expression: 'blah1',
expectedError: "Undefined name 'blah1'",
);
await driver.check(
compiler: compiler,
scope: <String, String>{},
expression: 'blah2',
expectedError: "Undefined name 'blah2'",
);
});
});
group('Expression compiler import tests', () {
var source = '''
import 'dart:io' show Directory;
import 'dart:io' as p;
import 'dart:convert' as p;
main() {
print(Directory.systemTemp);
print(p.Directory.systemTemp);
print(p.utf8.decoder);
}
void foo() {
// Breakpoint
}
''';
late ExpressionCompilerTestDriver driver;
setUp(() {
driver = ExpressionCompilerTestDriver(setup, source);
});
tearDown(() {
driver.delete();
});
test('expression referencing unnamed import', () async {
await driver.check(
scope: <String, String>{},
expression: 'Directory.systemTemp',
expectedResult: contains('return io.Directory.systemTemp;'));
});
test('expression referencing named import', () async {
await driver.check(
scope: <String, String>{},
expression: 'p.Directory.systemTemp',
expectedResult: contains('return io.Directory.systemTemp;'));
});
test('expression referencing another library with the same named import',
() async {
await driver.check(
scope: <String, String>{},
expression: 'p.utf8.decoder',
expectedResult: contains('return convert.utf8.decoder;'));
});
});
}