Files
sdk/tests/language_2/constructor/reference_test.dart
T
Johnni Winther 7bfa7fcea5 [cfe] Improve experiment not enabled messages
The updates the messaging for when experimental features are not
enabled to take into account whether the feature has been released
and whether an explicit or implicit language version opt out the
feature.

Change-Id: I77c31e7e327d1beca2dd4a82dbaf648711894e7a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/239663
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2022-04-01 12:49:07 +00:00

115 lines
3.7 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.
// @dart = 2.9
class Foo<X> {
const Foo();
const Foo.bar();
const Foo.baz();
}
main() {
new Foo();
new Foo.bar();
new Foo.bar.baz();
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
// ^
// [cfe] Couldn't find constructor 'Foo.bar.baz'.
new Foo<int>();
new Foo<int>.bar();
new Foo<int>.bar.baz();
// ^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [cfe] Expected '(' after this.
// ^^^
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
// [cfe] The method 'baz' isn't defined for the class 'Foo<int>'.
new Foo.bar<int>();
// ^
// [cfe] A constructor invocation can't have type arguments after the constructor name.
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
new Foo.bar<int>.baz();
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
// ^
// [cfe] Couldn't find constructor 'Foo.bar.baz'.
new Foo.bar.baz<int>();
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
// ^^^
// [analyzer] SYNTACTIC_ERROR.CONSTRUCTOR_WITH_TYPE_ARGUMENTS
// [cfe] A constructor invocation can't have type arguments after the constructor name.
// [cfe] Couldn't find constructor 'Foo.bar.baz'.
const Foo();
const Foo.bar();
const Foo.bar.baz();
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
// ^
// [cfe] Couldn't find constructor 'Foo.bar.baz'.
const Foo<int>();
const Foo<int>.bar();
const Foo<int>.bar.baz();
// ^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [cfe] Expected '(' after this.
// ^^^
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
// [cfe] The method 'baz' isn't defined for the class 'Foo<int>'.
const Foo.bar<int>();
// ^
// [cfe] A constructor invocation can't have type arguments after the constructor name.
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
const Foo.bar<int>.baz();
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
// ^
// [cfe] Couldn't find constructor 'Foo.bar.baz'.
const Foo.bar.baz<int>();
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
// ^^^
// [analyzer] SYNTACTIC_ERROR.CONSTRUCTOR_WITH_TYPE_ARGUMENTS
// [cfe] A constructor invocation can't have type arguments after the constructor name.
// [cfe] Couldn't find constructor 'Foo.bar.baz'.
Foo();
Foo.bar();
Foo.bar.baz();
// ^
// [cfe] Member not found: 'bar'.
// ^^^
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
Foo<int>();
Foo<int>.bar();
Foo<int>.bar.baz();
// ^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPERIMENT_NOT_ENABLED
// [cfe] The 'constructor-tearoffs' language feature is disabled for this library.
// ^
// [cfe] Member not found: 'bar'.
// ^^^
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
Foo.bar<int>();
// ^
// [cfe] A constructor invocation can't have type arguments after the constructor name.
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
Foo.bar<int>.baz();
// ^
// [cfe] Couldn't find constructor 'bar'.
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
Foo.bar.baz<int>();
// ^
// [cfe] Member not found: 'bar'.
// ^^^
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
}