blob: 7a47ac692e816b2773ad87b9fcc2b6f12b396457 [file] [log] [blame]
// 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;
class Class {
int instanceMethod() => 1;
int instanceMethod() => 2;
int get instanceGetter => 1;
int get instanceGetter => 2;
void set instanceSetter(value) {
result = 1;
}
void set instanceSetter(value) {
result = 2;
}
int instanceField = 1;
int instanceField = 2;
int instanceFieldAndSetter1 = 1;
void set instanceFieldAndSetter1(int value) {
result = 2;
}
void set instanceFieldAndSetter2(int value) {
result = 2;
}
int instanceFieldAndSetter2 = 1;
late final int instanceLateFinalFieldAndSetter1;
void set instanceLateFinalFieldAndSetter1(int value) {
result = 2;
}
void set instanceLateFinalFieldAndSetter2(int value) {
result = 2;
}
late final int instanceLateFinalFieldAndSetter2;
final int instanceDuplicateFieldAndSetter = 1;
final int instanceDuplicateFieldAndSetter = 2;
void set instanceDuplicateFieldAndSetter(int value) {
result = 3;
}
final int instanceFieldAndDuplicateSetter = 1;
void set instanceFieldAndDuplicateSetter(int value) {
result = 2;
}
void set instanceFieldAndDuplicateSetter(int value) {
result = 3;
}
final int instanceDuplicateFieldAndDuplicateSetter = 1;
final int instanceDuplicateFieldAndDuplicateSetter = 2;
void set instanceDuplicateFieldAndDuplicateSetter(int value) {
result = 3;
}
void set instanceDuplicateFieldAndDuplicateSetter(int value) {
result = 4;
}
int instanceMethodAndSetter1() => 1;
void set instanceMethodAndSetter1(int value) {
result = 2;
}
void set instanceMethodAndSetter2(int value) {
result = 2;
}
int instanceMethodAndSetter2() => 1;
}
test() {
Class c = new Class();
c.instanceMethod();
(c.instanceMethod)();
c.instanceGetter;
c.instanceSetter = 0;
c.instanceField;
c.instanceField = 0;
c.instanceDuplicateFieldAndSetter;
c.instanceDuplicateFieldAndSetter = 0;
c.instanceFieldAndDuplicateSetter;
c.instanceFieldAndDuplicateSetter = 0;
c.instanceDuplicateFieldAndDuplicateSetter;
c.instanceDuplicateFieldAndDuplicateSetter = 0;
}
main() {
Class c = new Class();
c.instanceFieldAndSetter1 = 0;
expect(null, result);
expect(0, c.instanceFieldAndSetter1);
result = null;
c.instanceFieldAndSetter2 = 0;
expect(null, result);
expect(0, c.instanceFieldAndSetter2);
result = null;
c.instanceLateFinalFieldAndSetter1 = 0;
expect(null, result);
expect(0, c.instanceLateFinalFieldAndSetter1);
result = null;
c.instanceLateFinalFieldAndSetter2 = 0;
expect(null, result);
expect(0, c.instanceLateFinalFieldAndSetter2);
result = null;
expect(1, c.instanceMethodAndSetter1());
c.instanceMethodAndSetter1 = 0;
expect(2, result);
result = null;
expect(1, c.instanceMethodAndSetter2());
c.instanceMethodAndSetter2 = 0;
expect(2, result);
}
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.';
}