Files
sdk/pkg/front_end/testcases/general/named_function_scope.dart
T
Johnni Winther 8b1b7cc0d9 [cfe] Remove language version from testcases/general (Part 4 of ?)
This in preparation for enabling all bleeding edge experimental
features in testcases/general to get early feedback on how new features
affect existing code.

Change-Id: I6c49f3d4980f07934c91257a999fe42c70b07482
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/235600
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2022-03-07 12:31:03 +00:00

74 lines
1.4 KiB
Dart

// Copyright (c) 2018, 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.
class T {}
class V {}
test() {
T t;
V v;
{
// This doesn't cause an error as the previous use of T is in an enclosing
// scope.
T() {}
}
{
// This doesn't cause an error as the previous use of V is in an enclosing
// scope.
var v;
}
{
T t;
// This doesn't cause a scope error as the named function expression has
// its own scope.
var x = T() {};
}
{
V v;
// This causes an error, V is already used in this scope.
var V;
}
{
V v;
// This causes an error, V is already used in this scope.
var V = null;
}
{
// This causes a scope error as T is already used in the function-type
// scope (the return type).
var x = T T() {};
}
{
// This causes a scope error: using the outer definition of `V` as a type
// when defining `V`.
V V;
}
{
// This causes a scope error as T is already defined as a type variable in
// the function-type scope.
var x = T<T>() {};
}
{
T t;
T T() => throw '';
}
{
T T() => throw '';
}
{
T t;
T T(T t) => t;
}
{
T T(T t) => t;
}
{
void T(T t) {}
}
}
void main() {}