Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#2138. Fix assertions in some functions tests #2140

Merged
merged 1 commit into from
Jul 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions Language/Functions/Type_of_a_Function/return_type_t01.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@
// 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.

/// @assertion If a function does not declare a return type explicitly, its
/// return type is dynamic, unless it is a constructor function, in which case
/// its return type is the immediately enclosing class.
/// @description Checks that return type is dynamic. Static checker should not
/// cause static warnings because type Dynamic has every method and property.
/// @assertion If a function declaration does not declare a return type
/// explicitly, its return type is dynamic, unless it is a constructor, in which
/// case it is not considered to have a return type, or it is a setter or
/// operator []=, in which case its return type is void
///
/// @description Checks that if a function declaration does not declare a return
/// type then its return type is dynamic
/// @author msyabro

import "../../../Utils/expect.dart";
Expand Down
8 changes: 5 additions & 3 deletions Language/Functions/Type_of_a_Function/return_type_t02.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@
// 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.

/// @assertion If a function does not declare a return type explicitly, its
/// return type is dynamic, unless it is a constructor function, in which case
/// its return type is the immediately enclosing class.
/// @assertion If a function declaration does not declare a return type
/// explicitly, its return type is dynamic, unless it is a constructor, in which
/// case it is not considered to have a return type, or it is a setter or
/// operator []=, in which case its return type is void
///
/// @description Checks that return type of a constructor is the immediately
/// enclosing class.
/// @author ngl@unipro.ru
Expand Down
24 changes: 24 additions & 0 deletions Language/Functions/Type_of_a_Function/return_type_t03.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Copyright (c) 2023, 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.

/// @assertion If a function declaration does not declare a return type
/// explicitly, its return type is dynamic, unless it is a constructor, in which
/// case it is not considered to have a return type, or it is a setter or
/// operator []=, in which case its return type is void
///
/// @description Checks that return type of a constructor is the immediately
/// enclosing class.
/// @author sgrekhov22@gmail.com

import "../../../Utils/static_type_helper.dart";

class C {
C() {}
C.n() {}
}

main() {
C.new.expectStaticType<Exactly<C Function()>>();
C.n.expectStaticType<Exactly<C Function()>>();
}
8 changes: 3 additions & 5 deletions Language/Functions/async_return_type_t01.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,13 @@
// 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.

/// @assertion It is a static warning if the declared return type of a function
/// marked async may not be assigned to Future.
/// @assertion It is a compile-time error if the declared return type of a
/// function marked async is not a supertype of Future<T> for some type T
///
/// @description Check that it is a compile time error, if the declared
/// return type of asynchronous function may not be assigned to Future.
///
/// return type of asynchronous function may not be assigned to `Future`.
/// @author a.semenov@unipro.ru


int f() async {
//^
// [analyzer] unspecified
Expand Down
8 changes: 3 additions & 5 deletions Language/Functions/async_return_type_t02.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,13 @@
// 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.

/// @assertion It is a static warning if the declared return type of a function
/// marked async may not be assigned to Future.
/// @assertion It is a compile-time error if the declared return type of a
/// function marked async is not a supertype of Future<T> for some type T
///
/// @description Check that it is no compile time error, if the declared
/// return type of asynchronous function may not be assigned to Future but is
/// void.
/// return type of asynchronous function is `void`.
/// @author a.semenov@unipro.ru


void h() async {
return null;
}
Expand Down
14 changes: 9 additions & 5 deletions Language/Functions/async_return_type_t03.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
// 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.

/// @assertion It is a static warning if the declared return type of a function
/// marked async may not be assigned to Future.
/// @assertion It is a compile-time error if the declared return type of a
/// function marked async is not a supertype of Future<T> for some type T
///
/// @description Check that it is no compile time error, if the declared
/// return type of asynchronous function may be assigned to Future.
///
/// return type of asynchronous function is a supertype of `Future<T>`
/// @author a.semenov@unipro.ru

import 'dart:async';
Expand All @@ -16,11 +15,16 @@ dynamic a() async {
return 'a';
}

Future b() async {
Future<String> b() async {
return 'b';
}

Future<Never> c() async {
return throw 1;
}

main() {
a();
b();
print(c);
}
13 changes: 4 additions & 9 deletions Language/Functions/generator_return_type_t01.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,13 @@
// 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.

/// @assertion It is a static warning if the declared return type of a function
/// marked sync* may not be assigned to Iterable. It is a static warning if
/// the declared return type of a function marked async* may not be assigned
/// to Stream.
///
/// @description Check that it is a compile error, if the declared
/// return type of synchronous generator function may not be assigned
/// to Iterable.
/// @assertion It is a compile-time error if the declared return type of a
/// function marked sync* is not a supertype of Iterable<T> for some type T
///
/// @description Check that it is a compile error, if the declared return type
/// of synchronous generator function is not a supertype of `Iterable<T>`
/// @author a.semenov@unipro.ru


int f() sync* { }
//^
// [analyzer] unspecified
Expand Down
12 changes: 4 additions & 8 deletions Language/Functions/generator_return_type_t02.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,14 @@
// 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.

/// @assertion It is a static warning if the declared return type of a function
/// marked sync* may not be assigned to Iterable. It is a static warning if
/// the declared return type of a function marked async* may not be assigned
/// to Stream.
/// @assertion It is a compile-time error if the declared return type of a
/// function marked sync* or async* is void.
///
/// @description Check that it is a compile error, if the declared
/// return type of synchronous generator function may not be assigned
/// to Iterable but is void.
/// @description Check that it is a compile error, if the declared return type
/// of synchronous generator function is `void`.
/// @issue 32192
/// @author a.semenov@unipro.ru


void h() sync* { }
//^
// [analyzer] unspecified
Expand Down
12 changes: 4 additions & 8 deletions Language/Functions/generator_return_type_t03.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,13 @@
// 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.

/// @assertion It is a static warning if the declared return type of a function
/// marked sync* may not be assigned to Iterable. It is a static warning if
/// the declared return type of a function marked async* may not be assigned
/// to Stream.
/// @assertion It is a compile-time error if the declared return type of a
/// function marked sync* is not a supertype of Iterable<T> for some type T
///
/// @description Check that it is no compile error, if the declared
/// return type of synchronous generator function may be assigned
/// to Iterable.
/// @description Check that it is no compile error, if the declared return type
/// of synchronous generator function is supertype of `Iterable`.
/// @author a.semenov@unipro.ru


Iterable c() sync* { }

main() {
Expand Down
13 changes: 4 additions & 9 deletions Language/Functions/generator_return_type_t04.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,13 @@
// 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.

/// @assertion It is a static warning if the declared return type of a function
/// marked sync* may not be assigned to Iterable. It is a static warning if
/// the declared return type of a function marked async* may not be assigned
/// to Stream.
///
/// @description Check that it is no compile error, if the declared
/// return type of synchronous generator function may be assigned
/// to Iterable.
/// @assertion It is a compile-time error if the declared return type of a
/// function marked sync* is not a supertype of Iterable<T> for some type T
///
/// @description Check that it is no compile error, if the declared return type
/// of synchronous generator function is supertype of `Iterable`.
/// @author a.semenov@unipro.ru


dynamic a() sync* { }

Iterable b() sync* { }
Expand Down
12 changes: 4 additions & 8 deletions Language/Functions/generator_return_type_t05.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,13 @@
// 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.

/// @assertion It is a static warning if the declared return type of a function
/// marked sync* may not be assigned to Iterable. It is a static warning if
/// the declared return type of a function marked async* may not be assigned
/// to Stream.
///
/// @description Check that it is a compile error, if the declared
/// return type of a function marked async* may not be assigned to Stream.
/// @assertion It is a compile-time error if the declared return type of a
/// function marked async* is not a supertype of Stream<T> for some type T
///
/// @description Check that it is a compile error, if the declared return type
/// of a function marked `async*` is not a supertype of Stream<T>
/// @author a.semenov@unipro.ru


int f() async* { }
//^
// [analyzer] unspecified
Expand Down
12 changes: 4 additions & 8 deletions Language/Functions/generator_return_type_t06.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,14 @@
// 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.

/// @assertion It is a static warning if the declared return type of a function
/// marked sync* may not be assigned to Iterable. It is a static warning if
/// the declared return type of a function marked async* may not be assigned
/// to Stream.
/// @assertion It is a compile-time error if the declared return type of a
/// function marked sync* or async* is void.
///
/// @description Check that it is a compile error, if the declared
/// return type of a function marked async* may not be assigned to Stream but is
/// void.
/// @description Check that it is a compile error, if the declared return type
/// of a function marked `async*` is `void`.
/// @issue 32192
/// @author a.semenov@unipro.ru


void h() async* { }
//^
// [analyzer] unspecified
Expand Down
10 changes: 4 additions & 6 deletions Language/Functions/generator_return_type_t07.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@
// 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.

/// @assertion It is a static warning if the declared return type of a function
/// marked sync* may not be assigned to Iterable. It is a static warning if
/// the declared return type of a function marked async* may not be assigned
/// to Stream.
/// @assertion It is a compile-time error if the declared return type of a
/// function marked async* is not a supertype of Stream<T> for some type T
///
/// @description Check that it is no compile error, if the declared
/// return type of a function marked async* may be assigned to Stream.
/// @description Check that it is no compile error, if the declared return type
/// of a function marked `async*` is a supertype of `Stream<T>`.
/// @author a.semenov@unipro.ru

import 'dart:async';
Expand Down
11 changes: 4 additions & 7 deletions Language/Functions/generator_return_type_t08.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,11 @@
// 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.

/// @assertion It is a static warning if the declared return type of a function
/// marked sync* may not be assigned to Iterable. It is a static warning if
/// the declared return type of a function marked async* may not be assigned
/// to Stream.
///
/// @description Check that it is no compile error, if the declared
/// return type of a function marked async* may be assigned to Stream.
/// @assertion It is a compile-time error if the declared return type of a
/// function marked async* is not a supertype of Stream<T> for some type T
///
/// @description Check that it is no compile error, if the declared return type
/// of a function marked `async*` is a supertype of `Stream<T>`.
/// @author a.semenov@unipro.ru

import 'dart:async';
Expand Down