blob: 815ed39526631ee74d0501e78d99656a8b78e722 [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);
}