Files
sdk/pkg/dev_compiler/test/js/builder_test.dart
T
Jenny Messerly dab7da78cd fix implicit casts in DDC
There are a few bug fixes here as well. Most notably, `.name.name`
instead of `.name` in DDK's analysis of virtual accessors. DDC/K's
handling of spread arguments in JS interop was also fairly broken
(it was generating a RestParameter instead of Spread). There's
also a lot of cleanup in js_ast as well, to make it a bit more
type safe.

Change-Id: Ia5333179e6dd0a62f20ce64a2b2b8bedf2ed7c49
Reviewed-on: https://dart-review.googlesource.com/44700
Commit-Queue: Jenny Messerly <jmesserly@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
2018-03-07 01:26:21 +00:00

43 lines
1.4 KiB
Dart

import 'package:dev_compiler/src/js_ast/js_ast.dart';
import 'package:test/test.dart';
final _prenumberedPlaceholders = new RegExp(r'#\d+');
MiniJsParser _parser(String src) =>
new MiniJsParser(src.replaceAll(_prenumberedPlaceholders, '#'));
_check(Node node, String expected) =>
expect(node.toString(), 'js_ast `$expected`');
_checkStatement(String src) => _check(_parser(src).parseStatement(), src);
_checkExpression(String src) => _check(_parser(src).parseExpression(), src);
main() {
group('MiniJsParser', () {
// TODO(ochafik): Add more coverage.
test('parses classes with complex members', () {
_checkExpression('class Foo {\n'
' [foo](...args) {}\n'
' [#0](x) {}\n'
' static [foo](...args) {}\n'
' static [#1](x) {}\n'
' get [foo]() {}\n'
' get [#2]() {}\n'
' static get [foo]() {}\n'
' static get [#3]() {}\n'
' set [foo](v) {}\n'
' set [#4](v) {}\n'
' static set [foo](v) {}\n'
' static set [#5](v) {}\n'
'}');
});
test('parses statements', () {
_checkStatement('for (let i = 0; i < 10; i++) {\n}\n');
_checkStatement('for (let i = 0, j = 1; i < 10; i++) {\n}\n');
_checkStatement('var [x, y = []] = list;\n');
_checkStatement('var {x, y = {x: y}} = obj;\n');
});
});
}