Sort a few files.

Change-Id: I4f1343a4b45ab2871ca7aa3a6eeb221072a3845d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290265
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov 2023-03-21 21:40:48 +00:00 committed by Commit Queue
parent 4271aaacfd
commit c7c2be07d6
3 changed files with 262 additions and 262 deletions

View file

@ -16,8 +16,6 @@
import 'dart:convert';
import 'dart:io';
const countRuns = 2;
void main(List<String> args) async {
try {
final results = <Map<String, dynamic>>[];
@ -45,6 +43,8 @@ void main(List<String> args) async {
}
}
const countRuns = 2;
Future<List<Map<String, dynamic>>> runBenchmarks({required bool warm}) async {
final temperature = warm ? 'warm' : 'cold';
final benchmarkResults = await Process.run(Platform.resolvedExecutable, [

View file

@ -2246,21 +2246,6 @@ class _InvalidAccessVerifier {
return false;
}
/// Check if @visibleForTemplate is applied to the given [Element].
///
/// [ClassElement] and [EnumElement] are excluded from the @visibleForTemplate
/// access checks. Instead, the access restriction is cascaded to the
/// corresponding class members and enum constants. For other types of
/// elements, check if they are annotated based on `hasVisibleForTemplate`
/// value.
bool _isVisibleForTemplateApplied(Element? element) {
if (element is ClassElement || element is EnumElement) {
return false;
} else {
return _hasVisibleForTemplate(element);
}
}
bool _hasVisibleForTemplate(Element? element) {
if (element == null) {
return false;
@ -2309,6 +2294,21 @@ class _InvalidAccessVerifier {
}
return _workspacePackage!.contains(library.source);
}
/// Check if @visibleForTemplate is applied to the given [Element].
///
/// [ClassElement] and [EnumElement] are excluded from the @visibleForTemplate
/// access checks. Instead, the access restriction is cascaded to the
/// corresponding class members and enum constants. For other types of
/// elements, check if they are annotated based on `hasVisibleForTemplate`
/// value.
bool _isVisibleForTemplateApplied(Element? element) {
if (element is ClassElement || element is EnumElement) {
return false;
} else {
return _hasVisibleForTemplate(element);
}
}
}
/// A visitor that determines, upon visiting a function body and/or a

View file

@ -39,6 +39,129 @@ class _VisibleForTemplate {
);
}
test_cascadingClassMember() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
int _x;
A(this._x);
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
new A(0);
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart', [
error(HintCode.UNUSED_FIELD, 86, 2),
]);
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(WarningCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 41, 1),
]);
}
test_cascadingEnumConstant() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
enum SomeEnum {
optionA,
optionB,
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
var allOptions = SomeEnum.optionA;
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(HintCode.UNUSED_LOCAL_VARIABLE, 41, 10),
error(WarningCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 63, 7),
]);
}
test_classConstructor() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
void p() => print('hello');
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
var second = new A();
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(HintCode.UNUSED_LOCAL_VARIABLE, 41, 6),
error(WarningCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 54, 1),
]);
}
test_classDeclaration() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
static bool isItTrue() => false;
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
var foo = A;
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(HintCode.UNUSED_LOCAL_VARIABLE, 41, 3),
]);
}
test_enumDeclaration() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
enum SomeEnum {
optionA,
optionB,
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
var allOptions = SomeEnum;
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(HintCode.UNUSED_LOCAL_VARIABLE, 41, 10),
]);
}
test_export() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@ -54,6 +177,108 @@ export 'lib1.dart' show fn0;
await _resolveFile('$testPackageLibPath/lib2.dart');
}
test_extendClass() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
void p() => print('hello');
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
class B extends A {
}
void main() {
var second = B();
second.p();
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(WarningCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 86, 1),
]);
}
test_extendClass_super() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
void p() => print('hello');
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
class B extends A {
void q() => super.p();
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(WarningCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 61, 1),
]);
}
test_extendClass_withOverride() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
void p() => print('hello');
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
class B extends A {
@override
void p() => print('world');
}
void main() {
var second = B();
second.p();
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart');
}
test_extendingClass_withProtected() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
import 'package:meta/meta.dart';
@visibleForTemplate
class A {
@protected
void p() => print('hello');
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
class B extends A {
void p() => super.p();
}
void main() {
var second = B();
second.p();
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart');
}
test_functionInExtension() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@ -231,6 +456,26 @@ void main() {
await _resolveFile('$testPackageLibPath/lib1.template.dart');
}
test_supertype_method() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {}
var a = A();
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
print(a.hashCode);
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart');
}
test_topLevelFunction() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@ -298,251 +543,6 @@ void main() {
]);
}
test_classDeclaration() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
static bool isItTrue() => false;
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
var foo = A;
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(HintCode.UNUSED_LOCAL_VARIABLE, 41, 3),
]);
}
test_cascadingClassMember() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
int _x;
A(this._x);
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
new A(0);
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart', [
error(HintCode.UNUSED_FIELD, 86, 2),
]);
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(WarningCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 41, 1),
]);
}
test_enumDeclaration() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
enum SomeEnum {
optionA,
optionB,
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
var allOptions = SomeEnum;
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(HintCode.UNUSED_LOCAL_VARIABLE, 41, 10),
]);
}
test_cascadingEnumConstant() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
enum SomeEnum {
optionA,
optionB,
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
var allOptions = SomeEnum.optionA;
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(HintCode.UNUSED_LOCAL_VARIABLE, 41, 10),
error(WarningCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 63, 7),
]);
}
test_classConstructor() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
void p() => print('hello');
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
var second = new A();
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(HintCode.UNUSED_LOCAL_VARIABLE, 41, 6),
error(WarningCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 54, 1),
]);
}
test_extendClass() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
void p() => print('hello');
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
class B extends A {
}
void main() {
var second = B();
second.p();
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(WarningCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 86, 1),
]);
}
test_extendClass_super() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
void p() => print('hello');
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
class B extends A {
void q() => super.p();
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart', [
error(WarningCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 61, 1),
]);
}
test_extendClass_withOverride() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {
void p() => print('hello');
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
class B extends A {
@override
void p() => print('world');
}
void main() {
var second = B();
second.p();
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart');
}
test_extendingClass_withProtected() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
import 'package:meta/meta.dart';
@visibleForTemplate
class A {
@protected
void p() => print('hello');
}
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
class B extends A {
void p() => super.p();
}
void main() {
var second = B();
second.p();
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart');
}
test_supertype_method() async {
newFile('$testPackageLibPath/lib1.dart', r'''
import 'package:angular_meta/angular_meta.dart';
@visibleForTemplate
class A {}
var a = A();
''');
newFile('$testPackageLibPath/lib2.dart', r'''
import 'lib1.dart';
void main() {
print(a.hashCode);
}
''');
await _resolveFile('$testPackageLibPath/lib1.dart');
await _resolveFile('$testPackageLibPath/lib2.dart');
}
/// Resolve the file with the given [path].
///
/// Similar to ResolutionTest.resolveTestFile, but a custom path is supported.