blob: 0aeb01a108415d0d5c9b99d906e34bb11e4d900d [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 Like for a class or mixin member declaration, the names of the
/// extension members, both static and instance, are in the lexical scope of the
/// extension member body. That is why MySmart above can invoke the static
/// smartHelper without prefixing it by the extension name. In the same way,
/// instance member declarations (the extension members) are in the lexical scope
///
/// @description Check that extension static member cannot access referred class
/// static member without prefix
/// @author sgrekhov@unipro.ru
class C {
static String cStaticMember = "Lily was here";
}
extension ExtendedC on C {
static String st = cStaticMember;
// ^^^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.UNQUALIFIED_REFERENCE_TO_STATIC_MEMBER_OF_EXTENDED_TYPE
// [cfe] Getter not found: 'cStaticMember'.
void test() {
cStaticMember;
// ^^^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.UNQUALIFIED_REFERENCE_TO_STATIC_MEMBER_OF_EXTENDED_TYPE
// [cfe] The getter 'cStaticMember' isn't defined for the class 'C'.
}
}
main() {
C c = new C();
c.test();
}