blob: 93ea4d65e3ab7f8d8fccbae1d585b95fafbad51c [file] [log] [blame]
// Copyright (c) 2020, 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.
import 'dart:async';
String returnImplicit() /*error*/ {
print("foo");
}
String returnExplicit() {
print("foo");
return null; // error
}
String returnMixed(bool b) /*error*/ {
if (b) {
print("foo");
return null; // error
}
}
Future returnAsync1() async {} // ok
FutureOr returnAsync2() async {} // ok
FutureOr<int> returnAsync3() async {} // error
FutureOr<int?> returnAsync4() async {} // ok
returnAsync5() async {} // ok
Future<int?> returnAsync6() async {
return null; // ok
}
Future<int?> returnAsync7() async {} // ok
Iterable yieldSync() sync* {} // ok
Stream yieldAsync() async* {} // ok
enum Enum { a, b }
Enum caseReturn1(Enum e) /* ok */ {
switch (e) {
case Enum.a:
return e;
case Enum.b:
return e;
}
}
Enum caseReturn2(Enum e) /* error */ {
switch (e) {
case Enum.a:
return e;
default:
}
}
localFunctions() {
String returnImplicit() /* error */ {
print("foo");
}
String returnExplicit() {
print("foo");
return null; // error
}
String returnMixed(bool b) /* error */ {
if (b) {
print("foo");
return null; // error
}
}
Future returnAsync1() async {} // ok
FutureOr returnAsync2() async {} // ok
FutureOr<int> returnAsync3() async {} // error
FutureOr<int?> returnAsync4() async {} // ok
returnAsync5() async {} // ok
Future<int?> returnAsync6() async {
return null; // ok
}
Future<int?> returnAsync7() async {} // ok
Iterable yieldSync() sync* {} // ok
Stream yieldAsync() async* {} // ok
Enum caseReturn1(Enum e) /* ok */ {
switch (e) {
case Enum.a:
return e;
case Enum.b:
return e;
}
}
Enum caseReturn2(Enum e) /* error */ {
switch (e) {
case Enum.a:
return e;
default:
}
}
bool b = false;
var local1 = () /* ok */ {
if (b) return 0;
}();
var local2 = () /* ok */ {
if (b) return null;
if (!b) return 0;
}();
}
main() {}