| Index: CHANGELOG.md
|
| diff --git a/CHANGELOG.md b/CHANGELOG.md
|
| index 8031041231dbc39b2cbccba7a22ac517a555df62..7b8a311652b5465c17645a4d3e494473a5258dd9 100644
|
| --- a/CHANGELOG.md
|
| +++ b/CHANGELOG.md
|
| @@ -8,6 +8,30 @@
|
| type `void` now allows the returned expression to have any type. For example,
|
| assuming the declaration `int x;`, it is now type correct to have
|
| `void f() => ++x;`.
|
| +* A new function-type syntax has been added to the language.
|
| + Intuitively, the type of a function can be constructed by textually replacing
|
| + the function's name with `Function` in its declaration. For instance, the
|
| + type of `void foo() {}` would be `void Function()`. The new syntax may be used
|
| + wherever a type can be written. It is thus now possible to declare fields
|
| + containing functions without needing to write typedefs: `void Function() x;`.
|
| + The new function type has one restriction: it may not contain the old-style
|
| + function-type syntax for its parameters. The following is thus
|
| + illegal: `void Function(int f())`.
|
| + `typedefs` have been updated to support this new syntax.
|
| + Examples:
|
| + ```
|
| + typedef F = void Function(); // F is the name for a `void` callback.
|
| + int Function(int) f; // A field `f` that contains an int->int function.
|
| +
|
| + class A<T> {
|
| + // The parameter `callback` is a function that takes a `T` and returns
|
| + // `void`.
|
| + void forEach(void Function(T) callback);
|
| + }
|
| +
|
| + // The new function type supports generic arguments.
|
| + typedef Invoker = T Function<T>(T Function() callback);
|
| + ```
|
|
|
| #### Strong Mode
|
|
|
| @@ -24,6 +48,7 @@ entirely to allow inference to fill in the type.
|
| * The following is also a change in strong mode: During static analysis, a
|
| function or setter declared using `=>` with return type `void` now allows the
|
| returned expression to have any type.
|
| +* The new function-type syntax is also supported by strong mode.
|
|
|
| ### Core library changes
|
|
|
|
|