|  | // Copyright (c) 2017, 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. | 
|  |  | 
|  | // Dart test for static checks on situations where expressions of type void | 
|  | // can be used. The point is simply that there are no compile-time errors. | 
|  |  | 
|  | // We need expressions of type `void`; `void x` would do, but using | 
|  | // `void get x` will work with tools that do not yet handle `void x`. | 
|  | void get x => null; | 
|  |  | 
|  | void use(dynamic x) {} | 
|  |  | 
|  | main() { | 
|  | // In an expressionStatement `e;`, e may have type void. | 
|  | x; | 
|  |  | 
|  | // In the initialization and increment expressions of a for-loop, | 
|  | // `for (e1; e2; e3) {..}`, `e1` and `e3` may have type void. | 
|  | for (x; ; x) { | 
|  | break; | 
|  | } | 
|  |  | 
|  | // In a typeCast `e as T`, `e` may have type void. | 
|  | var y = x as Object?; | 
|  |  | 
|  | // In a parenthesized expression `(e)`, `e` may have type void. | 
|  | (x); | 
|  |  | 
|  | // In a return statement `return e;`, when the return type of the | 
|  | // innermost enclosing function is the type void, e may have type void. | 
|  | void f() => x; | 
|  |  | 
|  | void g() { | 
|  | return x; | 
|  | } | 
|  | } |