blob: d8bf29ed2e8da6031a8e58d5937bc2025d2a1714 [file] [log] [blame]
// Copyright (c) 2019, 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.
/// @assertion Inside an extension method body, this does not refer to an
/// instance of a surrounding type. Instead it is bound to the original receiver,
/// and the static type of this is the declared on type of the surrounding
/// extension (which may contain unbound type variables).
///
/// @description Check that inside an extension method body 'this' refers to the
/// original receiver
/// @author sgrekhov@unipro.ru
import "../../Utils/expect.dart";
class A {
String a;
A(this.a);
}
class C extends A {
String c;
C(this.c, String a): super(a);
}
extension ExtendedC on C {
void test(C c) {
Expect.equals("c", this.c);
Expect.equals("a", this.a);
Expect.isTrue(this == c);
}
}
main() {
C c = new C("c", "a");
c.test(c);
}