Files
sdk/pkg/front_end/testcases/named_function_scope.dart
T
Peter von der Ahé 57ac8b1ad9 Remove redundant instrumentation from tests and expectations.
Remove instrumentation for diagnostic messages, forwarding stubs and
covariance, since all this information is present in the expectation
files already.

Change-Id: Idf6622f7eddba801761e13666b470ae6dcc9d59b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97106
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-03-20 06:52:13 +00:00

74 lines
1.3 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() {}
}
{
T T() {}
}
{
T t;
T T(T t) {}
}
{
T T(T t) {}
}
{
void T(T t) {}
}
}
void main() {}