Files
sdk/pkg/dev_compiler/test/codegen/expect/syncstar_syntax.js
T
John Messerly 93251ee241 upgrade to latest analyzer
fixes https://github.com/dart-lang/dev_compiler/issues/471

Changes here are:
* Analyzer now infers list/map literals
* Analyzer changed how isPotentiallyMutated* APIs work, so we need to track current function
* Another fix to arrow functions. We shouldn't skip generating covariant arg checks. If there were any, we use `=> { block }` form rather than `=> expr` form.

R=vsm@google.com

Review URL: https://codereview.chromium.org/1757343002 .
2016-03-03 11:32:54 -08:00

54 lines
1.6 KiB
JavaScript

dart_library.library('syncstar_syntax', null, /* Imports */[
'dart/_runtime',
'dart/core',
'expect/expect'
], /* Lazy imports */[
], function(exports, dart, core, expect) {
'use strict';
let dartx = dart.dartx;
function foo() {
return dart.syncStar(function*() {
yield 1;
yield* dart.list([2, 3], core.int);
}, core.int);
}
dart.fn(foo, core.Iterable$(core.int), []);
class Class extends core.Object {
bar() {
return dart.syncStar(function*() {
yield 1;
yield* dart.list([2, 3], core.int);
}, core.int);
}
static baz() {
return dart.syncStar(function*() {
yield 1;
yield* dart.list([2, 3], core.int);
}, core.int);
}
}
dart.setSignature(Class, {
methods: () => ({bar: [core.Iterable$(core.int), []]}),
statics: () => ({baz: [core.Iterable$(core.int), []]}),
names: ['baz']
});
function main() {
function qux() {
return dart.syncStar(function*() {
yield 1;
yield* dart.list([2, 3], core.int);
}, core.int);
}
dart.fn(qux, core.Iterable$(core.int), []);
expect.Expect.listEquals(dart.list([1, 2, 3], core.int), foo()[dartx.toList]());
expect.Expect.listEquals(dart.list([1, 2, 3], core.int), new Class().bar()[dartx.toList]());
expect.Expect.listEquals(dart.list([1, 2, 3], core.int), Class.baz()[dartx.toList]());
expect.Expect.listEquals(dart.list([1, 2, 3], core.int), qux()[dartx.toList]());
}
dart.fn(main);
// Exports:
exports.foo = foo;
exports.Class = Class;
exports.main = main;
});