| // Copyright (c) 2021, 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.md file. |
| |
| // These test cases verify that the identifier `new` can be used anywhere a |
| // constructor name might appear. |
| // |
| // Unless otherwise noted, these tests cases should not result in a parse error. |
| |
| class C { |
| C.new(); |
| |
| // This should be result in a parse error--even though `C() : this.new();` is |
| // allowed, `C() : this.new = ...;` should not be. |
| C.constructor_field_initializer() : this.new = null; |
| } |
| |
| class D { |
| factory D.new() => C(); |
| factory D.factory_redirection() = C.new; |
| factory D.factory_redirection_generic() = C<int>.new; |
| factory D.factory_redirection_prefixed() = prefix.C.new; |
| factory D.factory_redirection_prefixed_generic() = prefix.C<int>.new; |
| D.super_invocation() : super.new(); |
| D.this_redirection() : this.new(); |
| } |
| |
| var constructor_invocation_const = const C.new(); |
| var constructor_invocation_const_generic = const C<int>.new(); |
| var constructor_invocation_const_prefixed = const prefix.C.new(); |
| var constructor_invocation_const_prefixed_generic = const prefix.C<int>.new(); |
| var constructor_invocation_explicit = new C.new(); |
| var constructor_invocation_explicit_generic = new C<int>.new(); |
| var constructor_invocation_explicit_prefixed = new prefix.C.new(); |
| var constructor_invocation_explicit_prefixed_generic = new prefix.C<int>.new(); |
| var constructor_invocation_implicit = C.new(); |
| var constructor_invocation_implicit_generic = C<int>.new(); |
| var constructor_invocation_implicit_prefixed = prefix.C.new(); |
| var constructor_invocation_implicit_prefixed_generic = prefix.C<int>.new(); |
| var constructor_tearoff = C.new; |
| var constructor_tearoff_generic = C<int>.new; |
| var constructor_tearoff_generic_method_invocation = C<int>.new.toString(); |
| var constructor_tearoff_method_invocation = C.new.toString(); |
| var constructor_tearoff_prefixed = prefix.C.new; |
| var constructor_tearoff_prefixed_generic = prefix.C<int>.new; |
| var constructor_tearoff_prefixed_generic_method_invocation = |
| prefix.C<int>.new.toString(); |
| var constructor_tearoff_prefixed_method_invocation = prefix.C.new.toString(); |