blob: 75a1103a2decdfb9c157b2e832c2287f38f2d88d [file] [log] [blame]
// Copyright (c) 2020, 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 An external variable declaration D is treated as an external
* getter declaration and possibly an external setter declaration. The setter is
* included if and only if D is non-final. The return type of the getter and the
* parameter type of the setter, if present, is the type of D (which may be
* declared explicitly, obtained by override inference, or defaulted to dynamic).
* The parameter of the setter, if present, has the modifier covariant if and
* only if D has the modifier covariant (the grammar only allows this modifier
* on external instance variables).
*
* @description Checks that declaration
* class A {
* external covariant int i1;
* external covariant var i2;
* desugared as
* class A {
* external int get i1;
* external void set i1(covariant int _);
* external int get i2;
* external void set i2(covariant int _);
* @author sgrekhov@unipro.ru
*/
class A {
external covariant int i1;
external covariant var i2;
test() {
int j = i1;
i1 = 42;
int k = i2;
String s = i2;
i2 = 42;
i2 = "Lily was here";
}
}
main() {
new A();
}