mirror of
https://github.com/dart-lang/sdk
synced 2024-11-05 18:22:09 +00:00
40b6741778
This CL modifies the Dart source used from test.py such that it takes `syntax error` into account as an expected outcome in test files (so that we can have `//# 01: syntax error` with a similar meaning as `//# 01: compile-time error`). For all tools except the spec_parser, `syntax error` is the same outcome as `compile-time error`; that is, nobody else will see the difference. For the spec_parser, `syntax error` is the outcome where parsing has failed; `compile-time error` is taken to mean some other compile-time error, i.e., the spec_parser is expected to _succeed_ when the expected outcome is `compile-time error`. Test files in language and language_2 have been adjusted to use the outcome `syntax error` where appropriate. The status files in language and language_2 for the spec_parser have been adjusted such that they fit all the new `syntax error` outcomes in test files. Other status files have been adjusted in a few cases where tests were corrected (because a compile-time error which was clearly not intended to be a syntax error turned out to be caused by a typo, which means that the actual compile-time error has never been tested). The spec grammar Dart.g was adjusted in a few cases, when some bugs were discovered. In particular, the treatment of Function has been changed: It is now known by the parser that Function does not take any type arguments. This makes no difference for developers, because they cannot declare a type named Function anyway, but it means that a number of tricky parsing issues were resolved. Dart.g was also adjusted to allow `qualified` to contain three identifiers, which is an old bug (preventing things like metadata on the form `@p.C.myConst`). Change-Id: Ie420887d45c882ef97c84143365219f8aa0d2933 Reviewed-on: https://dart-review.googlesource.com/18262 Commit-Queue: Erik Ernst <eernst@google.com> Reviewed-by: Bob Nystrom <rnystrom@google.com> Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
301 lines
14 KiB
Dart
301 lines
14 KiB
Dart
// Copyright (c) 2015, 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.
|
|
|
|
// Test async/await syntax.
|
|
|
|
import 'dart:async' show Stream;
|
|
|
|
var yield = 0;
|
|
var await = 0;
|
|
get st => new Stream.fromIterable([]);
|
|
|
|
a01a() async => null; // //# a01a: ok
|
|
a01b() async* => null; // //# a01b: syntax error
|
|
a01c() sync* => null; // //# a01c: syntax error
|
|
a01d() async => yield 5; // //# a01d: syntax error
|
|
a02a() async {} // //# a02a: ok
|
|
a03a() async* {} // //# a03a: ok
|
|
a03b() async * {} // //# a03b: ok
|
|
a04a() sync* {} // //# a04a: ok
|
|
a04b() sync {} // //# a04b: syntax error
|
|
a04c() sync * {} // //# a04c: ok
|
|
a05a() async { await 0; } // //# a05a: ok
|
|
a05b() async { // //# a05b: ok
|
|
await(a) {}; // //# a05b: continued
|
|
await(0); // //# a05b: continued
|
|
} // //# a05b: continued
|
|
a05c() { // //# a05c: ok
|
|
await(a) {}; // //# a05c: continued
|
|
await(0); // //# a05c: continued
|
|
} // //# a05c: continued
|
|
a05d() async { // //# a05d: syntax error
|
|
await(a) {} // //# a05d: continued
|
|
await(0); // //# a05d: continued
|
|
} // //# a05d: continued
|
|
a05e() { // //# a05e: ok
|
|
await(a) {} // //# a05e: continued
|
|
await(0); // //# a05e: continued
|
|
} // //# a05e: continued
|
|
a05f() async { // //# a05f: syntax error
|
|
var await = (a) {}; // //# a05f: continued
|
|
await(0); // //# a05f: continued
|
|
} // //# a05f: continued
|
|
a05g() async { // //# a05g: compile-time error
|
|
yield 5; // //# a05g: continued
|
|
} // //# a05g: continued
|
|
a05h() async { // //# a05h: continued
|
|
yield* st; // //# a05h: compile-time error
|
|
} // //# a05h: continued
|
|
a06a() async { await for (var o in st) {} } // //# a06a: ok
|
|
a06b() sync* { await for (var o in st) {} } // //# a06b: compile-time error
|
|
a07a() sync* { yield 0; } // //# a07a: ok
|
|
a07b() sync { yield 0; } // //# a07b: syntax error
|
|
a08a() sync* { yield* []; } // //# a08a: ok
|
|
a08b() sync { yield 0; } // //# a08b: syntax error
|
|
a09a() async* { yield 0; } // //# a09a: ok
|
|
a10a() async* { yield* []; } // //# a10a: compile-time error
|
|
|
|
get sync sync {} // //# a11a: syntax error
|
|
get sync sync* {} // //# a11b: ok
|
|
get async async {} // //# a11c: ok
|
|
get async async* {} // //# a11d: ok
|
|
|
|
get sync {} // //# a12a: ok
|
|
get sync* {} // //# a12b: syntax error
|
|
get async {} // //# a12c: ok
|
|
get async* {} // //# a12d: syntax error
|
|
get a12e sync* => null; // //# a12e: syntax error
|
|
get a12f async* => null; // //# a12f: syntax error
|
|
get a12g async => null; // //# a12g: ok
|
|
|
|
int sync; // //# a13a: ok
|
|
int sync*; // //# a13b: syntax error
|
|
int async; // //# a13c: ok
|
|
int async*; // //# a13d: syntax error
|
|
|
|
var sync; // //# a14a: ok
|
|
var sync*; // //# a14b: syntax error
|
|
var async; // //# a14c: ok
|
|
var async*; // //# a14d: syntax error
|
|
|
|
sync() {} // //# a15a: ok
|
|
sync*() {} // //# a15b: syntax error
|
|
async() {} // //# a15c: ok
|
|
async*() {} // //# a15d: syntax error
|
|
|
|
abstract class B {
|
|
b00a() async; // //# b00a: syntax error
|
|
b00b() async*; // //# b00b: syntax error
|
|
b00c() sync*; // //# b00c: syntax error
|
|
b00d() sync; // //# b00d: syntax error
|
|
}
|
|
|
|
class C extends B {
|
|
C();
|
|
|
|
factory C.e1() async { return null; } // //# e1: compile-time error
|
|
factory C.e2() async* { return null; } // //# e2: compile-time error
|
|
factory C.e3() sync* { return null; } // //# e3: compile-time error
|
|
factory C.e4() async = C; // //# e4: syntax error
|
|
factory C.e5() async* = C; // //# e5: syntax error
|
|
factory C.e6() sync* = C; // //# e6: syntax error
|
|
C.e7() async {} // //# e7: compile-time error
|
|
C.e8() async* {} // //# e8: compile-time error
|
|
C.e9() sync* {} // //# e9: compile-time error
|
|
|
|
b00a() {} // //# b00a: continued
|
|
b00b() {} // //# b00b: continued
|
|
b00c() {} // //# b00c: continued
|
|
b00d() {} // //# b00d: continued
|
|
|
|
b01a() async => null; // //# b01a: ok
|
|
b01b() async* => null; // //# b01b: syntax error
|
|
b01c() sync* => null; // //# b01c: syntax error
|
|
b02a() async {} // //# b02a: ok
|
|
b03a() async* {} // //# b03a: ok
|
|
b04a() sync* {} // //# b04a: ok
|
|
b04b() sync {} // //# b04b: syntax error
|
|
b05a() async { await 0; } // //# b05a: ok
|
|
b06a() async { await for (var o in st) {} } // //# b06a: ok
|
|
b06b() async { await for ( ; ; ) {} } // //# b06b: compile-time error
|
|
b07a() sync* { yield 0; } // //# b07a: ok
|
|
b08a() sync* { yield* []; } // //# b08a: ok
|
|
b09a() async* { yield 0; } // //# b09a: ok
|
|
b10a() async* { yield* []; } // //# b10a: compile-time error
|
|
b10b() async { yield 0; } // //# b10b: compile-time error
|
|
|
|
get sync sync {} // //# b11a: syntax error
|
|
get sync sync* {} // //# b11b: ok
|
|
get async async {} // //# b11c: ok
|
|
get async async* {} // //# b11d: ok
|
|
|
|
get sync {} // //# b12a: ok
|
|
get sync* {} // //# b12b: syntax error
|
|
get async {} // //# b12c: ok
|
|
get async* {} // //# b12d: syntax error
|
|
get b12e sync* => null; // //# b12e: syntax error
|
|
get b12f async* => null; // //# b12f: syntax error
|
|
get b12g async => null; // //# b12g: ok
|
|
|
|
int sync; // //# b13a: ok
|
|
int sync*; // //# b13b: syntax error
|
|
int async; // //# b13c: ok
|
|
int async*; // //# b13d: syntax error
|
|
|
|
var sync; // //# b14a: ok
|
|
var sync*; // //# b14b: syntax error
|
|
var async; // //# b14c: ok
|
|
var async*; // //# b14d: syntax error
|
|
|
|
sync() {} // //# b15a: ok
|
|
sync*() {} // //# b15b: syntax error
|
|
async() {} // //# b15c: ok
|
|
async*() {} // //# b15d: syntax error
|
|
}
|
|
|
|
method1() {
|
|
c01a() async => null; c01a(); // //# c01a: ok
|
|
c01b() async* => null; c01b(); // //# c01b: syntax error
|
|
c01c() sync* => null; c01c(); // //# c01c: syntax error
|
|
c02a() async {} c02a(); // //# c02a: ok
|
|
c03a() async* {} c03a(); // //# c03a: ok
|
|
c04a() sync* {} c04a(); // //# c04a: ok
|
|
c04b() sync {} c04b(); // //# c04b: syntax error
|
|
c05a() async { await 0; } c05a(); // //# c05a: ok
|
|
c06a() async { await for (var o in st) {} } c06a(); // //# c06a: ok
|
|
c07a() sync* { yield 0; } c07a(); // //# c07a: ok
|
|
c08a() sync* { yield* []; } c08a(); // //# c08a: ok
|
|
c09a() async* { yield 0; } c09a(); // //# c09a: ok
|
|
c10a() async* { yield* []; } c10a(); // //# c10a: compile-time error
|
|
c11a() async { yield -5; } c11a(); // //# c11a: compile-time error
|
|
c11b() async { yield* st; } c11b(); // //# c11b: compile-time error
|
|
}
|
|
|
|
method2() {
|
|
var d01a = () async => null; d01a(); // //# d01a: ok
|
|
var d01b = () async* => null; d01b(); // //# d01b: syntax error
|
|
var d01c = () sync* => null; d01c(); // //# d01c: syntax error
|
|
var d02a = () async {}; d02a(); // //# d02a: ok
|
|
var d03a = () async* {}; d03a(); // //# d03a: ok
|
|
var d04a = () sync* {}; d04a(); // //# d04a: ok
|
|
var d04b = () sync {}; d04b(); // //# d04b: syntax error
|
|
var d05a = () async { await 0; }; d05a(); // //# d05a: ok
|
|
var d06a = () async { await for (var o in st) {} }; d06a(); // //# d06a: ok
|
|
var d07a = () sync* { yield 0; }; d07a(); // //# d07a: ok
|
|
var d08a = () sync* { yield* []; }; d08a(); // //# d08a: ok
|
|
var d08b = () sync* { yield*0+1; }; d08b(); // //# d08b: compile-time error
|
|
var d08c = () { yield*0+1; }; d08c(); // //# d08c: ok
|
|
var d09a = () async* { yield 0; }; d09a(); // //# d09a: ok
|
|
var d10a = () async* { yield* []; }; d10a(); // //# d10a: compile-time error
|
|
}
|
|
|
|
void main() {
|
|
var a;
|
|
var c = new C();
|
|
c = new C.e1(); //# e1: continued
|
|
c = new C.e2(); //# e2: continued
|
|
c = new C.e3(); //# e3: continued
|
|
c = new C.e4(); //# e4: continued
|
|
c = new C.e5(); //# e5: continued
|
|
c = new C.e6(); //# e6: continued
|
|
c = new C.e7(); //# e7: continued
|
|
c = new C.e8(); //# e8: continued
|
|
c = new C.e9(); //# e9: continued
|
|
|
|
a01a(); // //# a01a: continued
|
|
a01b(); // //# a01b: continued
|
|
a01c(); // //# a01c: continued
|
|
a01d(); // //# a01d: continued
|
|
a02a(); // //# a02a: continued
|
|
a03a(); // //# a03a: continued
|
|
a03b(); // //# a03b: continued
|
|
a04a(); // //# a04a: continued
|
|
a04b(); // //# a04b: continued
|
|
a04c(); // //# a04c: continued
|
|
a05a(); // //# a05a: continued
|
|
a05b(); // //# a05b: continued
|
|
a05c(); // //# a05c: continued
|
|
a05d(); // //# a05d: continued
|
|
a05e(); // //# a05e: continued
|
|
a05f(); // //# a05f: continued
|
|
a05g(); // //# a05g: continued
|
|
a05h(); // //# a05h: continued
|
|
a06a(); // //# a06a: continued
|
|
a06b(); // //# a06b: continued
|
|
a07a(); // //# a07a: continued
|
|
a07b(); // //# a07b: continued
|
|
a08a(); // //# a08a: continued
|
|
a08b(); // //# a08b: continued
|
|
a09a(); // //# a09a: continued
|
|
a10a(); // //# a10a: continued
|
|
a = sync; // //# a11a: continued
|
|
a = sync; // //# a11b: continued
|
|
a = async; // //# a11c: continued
|
|
a = async; // //# a11d: continued
|
|
a = sync; // //# a12a: continued
|
|
a = sync; // //# a12b: continued
|
|
a = async; // //# a12c: continued
|
|
a = async; // //# a12d: continued
|
|
a = a12e; // //# a12e: continued
|
|
a = a12f; // //# a12f: continued
|
|
a = a12g; // //# a12g: continued
|
|
a = sync; // //# a13a: continued
|
|
a = sync; // //# a13b: continued
|
|
a = async; // //# a13c: continued
|
|
a = async; // //# a13d: continued
|
|
a = sync; // //# a14a: continued
|
|
a = sync; // //# a14b: continued
|
|
a = async; // //# a14c: continued
|
|
a = async; // //# a14d: continued
|
|
sync(); // //# a15a: continued
|
|
sync(); // //# a15b: continued
|
|
async(); // //# a15c: continued
|
|
async(); // //# a15d: continued
|
|
|
|
c.b00a(); // //# b00a: continued
|
|
c.b00b(); // //# b00b: continued
|
|
c.b00c(); // //# b00c: continued
|
|
c.b00d(); // //# b00d: continued
|
|
c.b01a(); // //# b01a: continued
|
|
c.b01b(); // //# b01b: continued
|
|
c.b01c(); // //# b01c: continued
|
|
c.b02a(); // //# b02a: continued
|
|
c.b03a(); // //# b03a: continued
|
|
c.b04a(); // //# b04a: continued
|
|
c.b04b(); // //# b04b: continued
|
|
c.b05a(); // //# b05a: continued
|
|
c.b06a(); // //# b06a: continued
|
|
c.b06b(); // //# b06b: continued
|
|
c.b07a(); // //# b07a: continued
|
|
c.b08a(); // //# b08a: continued
|
|
c.b09a(); // //# b09a: continued
|
|
c.b10a(); // //# b10a: continued
|
|
c.b10b(); // //# b10b: continued
|
|
a = c.sync; // //# b11a: continued
|
|
a = c.sync; // //# b11b: continued
|
|
a = c.async; // //# b11c: continued
|
|
a = c.async; // //# b11d: continued
|
|
a = c.sync; // //# b12a: continued
|
|
a = c.sync; // //# b12b: continued
|
|
a = c.async; // //# b12c: continued
|
|
a = c.async; // //# b12d: continued
|
|
a = c.b12e; // //# b12e: continued
|
|
a = c.b12f; // //# b12f: continued
|
|
a = c.b12g; // //# b12g: continued
|
|
a = c.sync; // //# b13a: continued
|
|
a = c.sync; // //# b13b: continued
|
|
a = c.async; // //# b13c: continued
|
|
a = c.async; // //# b13d: continued
|
|
a = c.sync; // //# b14a: continued
|
|
a = c.sync; // //# b14b: continued
|
|
a = c.async; // //# b14c: continued
|
|
a = c.async; // //# b14d: continued
|
|
c.sync(); // //# b15a: continued
|
|
c.sync(); // //# b15b: continued
|
|
c.async(); // //# b15c: continued
|
|
c.async(); // //# b15d: continued
|
|
|
|
method1();
|
|
method2();
|
|
}
|