Files
sdk/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
T
Johnni Winther 504d63288e [cfe] Handle setter conflicts
Handle setter conflicts with non-setters and implicit setters.

Closes #44003
Closes #44844

Change-Id: I32c5e4022c187578e2cd37d13151c27451666dbc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183660
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2021-02-09 15:56:35 +00:00

138 lines
2.9 KiB
Dart

// 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 file.
var result;
int topLevelMethod() => 1;
int topLevelMethod() => 2;
int get topLevelGetter => 1;
int get topLevelGetter => 2;
void set topLevelSetter(value) {
result = 1;
}
void set topLevelSetter(value) {
result = 2;
}
int topLevelField = 1;
int topLevelField = 2;
int topLevelFieldAndSetter1 = 1;
void set topLevelFieldAndSetter1(int value) {
result = 2;
}
void set topLevelFieldAndSetter2(int value) {
result = 2;
}
int topLevelFieldAndSetter2 = 1;
late final int topLevelLateFinalFieldAndSetter1;
void set topLevelLateFinalFieldAndSetter1(int value) {
result = 2;
}
void set topLevelLateFinalFieldAndSetter2(int value) {
result = 2;
}
late final int topLevelLateFinalFieldAndSetter2;
final int topLevelDuplicateFieldAndSetter = 1;
final int topLevelDuplicateFieldAndSetter = 2;
void set topLevelDuplicateFieldAndSetter(int value) {
result = 3;
}
final int topLevelFieldAndDuplicateSetter = 1;
void set topLevelFieldAndDuplicateSetter(int value) {
result = 2;
}
void set topLevelFieldAndDuplicateSetter(int value) {
result = 3;
}
final int topLevelDuplicateFieldAndDuplicateSetter = 1;
final int topLevelDuplicateFieldAndDuplicateSetter = 2;
void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
result = 3;
}
void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
result = 4;
}
int topLevelMethodAndSetter1() => 1;
void set topLevelMethodAndSetter1(int value) {
result = 2;
}
void set topLevelMethodAndSetter2(int value) {
result = 2;
}
int topLevelMethodAndSetter2() => 1;
test() {
topLevelMethod();
(topLevelMethod)();
topLevelGetter;
topLevelSetter = 0;
topLevelField;
topLevelField = 0;
topLevelDuplicateFieldAndSetter;
topLevelDuplicateFieldAndSetter = 0;
topLevelFieldAndDuplicateSetter;
topLevelFieldAndDuplicateSetter = 0;
topLevelDuplicateFieldAndDuplicateSetter;
topLevelDuplicateFieldAndDuplicateSetter = 0;
topLevelMethodAndSetter1 = 0;
topLevelMethodAndSetter2 = 0;
}
main() {
result = null;
topLevelFieldAndSetter1 = 0;
expect(null, result);
expect(0, topLevelFieldAndSetter1);
result = null;
topLevelFieldAndSetter2 = 0;
expect(null, result);
expect(0, topLevelFieldAndSetter2);
result = null;
topLevelLateFinalFieldAndSetter1 = 0;
expect(null, result);
expect(0, topLevelLateFinalFieldAndSetter1);
result = null;
topLevelLateFinalFieldAndSetter2 = 0;
expect(null, result);
expect(0, topLevelLateFinalFieldAndSetter2);
expect(1, topLevelMethodAndSetter1());
expect(1, topLevelMethodAndSetter2());
}
expect(expected, actual) {
if (expected != actual) throw 'Expected $expected, actual $actual';
}
throws(dynamic Function() f) {
try {
f();
} catch (e) {
print(e);
return;
}
throw 'Expected exception.';
}