[CFE][kernel] Use .of instead of .from
This CL replaces most usages of `.from` (e.g. `List<String>.from(variable)`) to use `.of` instead. This is done because code like `List<String> foo = new List<String>.from([null])` is valid and gives no warnings or errors. Using `.of` instead will give an error. Also `.of` appears to be slightly faster. Change-Id: I1b4327be228b77e6a3e9faa283f8ce64f0565608 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/228642 Reviewed-by: Johnni Winther <johnniwinther@google.com> Reviewed-by: Chloe Stefantsova <cstefantsova@google.com> Commit-Queue: Jens Johansen <jensj@google.com>
This commit is contained in:
committed by
Commit Bot
parent
0ff6340598
commit
441dca77fd
@@ -10,10 +10,10 @@ class CombinatorBuilder {
|
||||
CombinatorBuilder(this.isShow, this.names, int charOffset, Uri fileUri);
|
||||
|
||||
CombinatorBuilder.show(Iterable<String> names, int charOffset, Uri fileUri)
|
||||
: this(true, new Set<String>.from(names), charOffset, fileUri);
|
||||
: this(true, new Set<String>.of(names), charOffset, fileUri);
|
||||
|
||||
CombinatorBuilder.hide(Iterable<String> names, int charOffset, Uri fileUri)
|
||||
: this(false, new Set<String>.from(names), charOffset, fileUri);
|
||||
: this(false, new Set<String>.of(names), charOffset, fileUri);
|
||||
|
||||
bool get isHide => !isShow;
|
||||
}
|
||||
|
||||
@@ -54,6 +54,6 @@ Future<List<Uri>> getDependencies(Uri script,
|
||||
kernelTarget.setEntryPoints(<Uri>[script]);
|
||||
dillTarget.buildOutlines();
|
||||
await kernelTarget.loader.buildOutlines();
|
||||
return new List<Uri>.from(c.dependencies);
|
||||
return new List<Uri>.of(c.dependencies);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -394,7 +394,7 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
|
||||
// Compute which libraries to output and which (previous) errors/warnings
|
||||
// we have to reissue. In the process do some cleanup too.
|
||||
List<Library> compiledLibraries =
|
||||
new List<Library>.from(currentKernelTarget.loader.libraries);
|
||||
new List<Library>.of(currentKernelTarget.loader.libraries);
|
||||
Map<Uri, Source> uriToSource = componentWithDill!.uriToSource;
|
||||
_experimentalCompilationPostCompilePatchup(
|
||||
experimentalInvalidation, compiledLibraries, uriToSource);
|
||||
@@ -2047,7 +2047,7 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
|
||||
IncrementalKernelTarget? lastGoodKernelTarget = this._lastGoodKernelTarget;
|
||||
if (lastGoodKernelTarget != null) {
|
||||
Set<Uri> uris =
|
||||
new Set<Uri>.from(lastGoodKernelTarget.loader.libraryImportUris);
|
||||
new Set<Uri>.of(lastGoodKernelTarget.loader.libraryImportUris);
|
||||
uris.removeAll(_dillLoadedData!.loader.libraryImportUris);
|
||||
if (_previousSourceBuilders != null) {
|
||||
for (Library library in _previousSourceBuilders!) {
|
||||
@@ -2578,7 +2578,7 @@ class _ComponentProblems {
|
||||
|
||||
// Save any new component-problems.
|
||||
_addProblemsAsJson(componentWithDill.problemsAsJson);
|
||||
return new List<String>.from(issuedProblems);
|
||||
return new List<String>.of(issuedProblems);
|
||||
}
|
||||
|
||||
void saveComponentProblems(Component component) {
|
||||
|
||||
@@ -175,7 +175,7 @@ class IncrementalSerializer {
|
||||
}
|
||||
|
||||
bool isSelfContained(Component component) {
|
||||
Set<Library> got = new Set<Library>.from(component.libraries);
|
||||
Set<Library> got = new Set<Library>.of(component.libraries);
|
||||
for (Library lib in component.libraries) {
|
||||
for (LibraryDependency dependency in lib.dependencies) {
|
||||
if (!got.contains(dependency.targetLibrary)) {
|
||||
|
||||
@@ -1901,7 +1901,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
}
|
||||
List<Object?>? argumentsOriginalOrder;
|
||||
if (libraryBuilder.enableNamedArgumentsAnywhereInLibrary) {
|
||||
argumentsOriginalOrder = new List<Object?>.from(arguments);
|
||||
argumentsOriginalOrder = new List<Object?>.of(arguments);
|
||||
}
|
||||
int firstNamedArgumentIndex = arguments.length;
|
||||
int positionalCount = 0;
|
||||
@@ -1951,6 +1951,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
assert(
|
||||
positionalIndex == positional.length && namedIndex == named.length);
|
||||
} else {
|
||||
// arguments have non-null Expression entries after the initial loop.
|
||||
positional = new List<Expression>.from(
|
||||
arguments.getRange(0, firstNamedArgumentIndex));
|
||||
named = new List<NamedExpression>.from(
|
||||
@@ -1962,6 +1963,8 @@ class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
} else {
|
||||
// TODO(kmillikin): Find a way to avoid allocating a second list in the
|
||||
// case where there were no named arguments, which is a common one.
|
||||
|
||||
// arguments have non-null Expression entries after the initial loop.
|
||||
push(forest.createArguments(
|
||||
beginToken.offset, new List<Expression>.from(arguments),
|
||||
argumentsOriginalOrder: argumentsOriginalOrder));
|
||||
@@ -4885,8 +4888,8 @@ class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
}
|
||||
List<NamedExpression> named = forest.argumentsNamed(arguments);
|
||||
if (named.isNotEmpty) {
|
||||
Set<String> parameterNames =
|
||||
new Set.from(function.namedParameters.map((a) => a.name));
|
||||
Set<String?> parameterNames =
|
||||
new Set.of(function.namedParameters.map((a) => a.name));
|
||||
for (NamedExpression argument in named) {
|
||||
if (!parameterNames.contains(argument.name)) {
|
||||
return fasta.templateNoSuchNamedParameter
|
||||
@@ -4897,7 +4900,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
}
|
||||
if (function.namedParameters.isNotEmpty) {
|
||||
if (libraryBuilder.isNonNullableByDefault) {
|
||||
Set<String> argumentNames = new Set.from(named.map((a) => a.name));
|
||||
Set<String> argumentNames = new Set.of(named.map((a) => a.name));
|
||||
for (VariableDeclaration parameter in function.namedParameters) {
|
||||
if (parameter.isRequired && !argumentNames.contains(parameter.name)) {
|
||||
return fasta.templateValueForRequiredParameterNotProvidedError
|
||||
@@ -4958,7 +4961,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
List<NamedExpression> named = forest.argumentsNamed(arguments);
|
||||
if (named.isNotEmpty) {
|
||||
Set<String> names =
|
||||
new Set.from(function.namedParameters.map((a) => a.name));
|
||||
new Set.of(function.namedParameters.map((a) => a.name));
|
||||
for (NamedExpression argument in named) {
|
||||
if (!names.contains(argument.name)) {
|
||||
return fasta.templateNoSuchNamedParameter
|
||||
@@ -4969,7 +4972,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
}
|
||||
if (function.namedParameters.isNotEmpty) {
|
||||
if (libraryBuilder.isNonNullableByDefault) {
|
||||
Set<String> argumentNames = new Set.from(named.map((a) => a.name));
|
||||
Set<String> argumentNames = new Set.of(named.map((a) => a.name));
|
||||
for (NamedType parameter in function.namedParameters) {
|
||||
if (parameter.isRequired && !argumentNames.contains(parameter.name)) {
|
||||
return fasta.templateValueForRequiredParameterNotProvidedError
|
||||
@@ -6053,7 +6056,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
noLocation,
|
||||
noLocation,
|
||||
// New list because the declarations are not a growable list.
|
||||
new List<Statement>.from(
|
||||
new List<Statement>.of(
|
||||
forest.variablesDeclarationExtractDeclarations(lvalue)));
|
||||
} else {
|
||||
effects = forest.createExpressionStatement(
|
||||
@@ -7147,7 +7150,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
Arguments? arguments, Expression expression) {
|
||||
if (arguments == null) return expression;
|
||||
List<Expression> expressions =
|
||||
new List<Expression>.from(forest.argumentsPositional(arguments));
|
||||
new List<Expression>.of(forest.argumentsPositional(arguments));
|
||||
for (NamedExpression named in forest.argumentsNamed(arguments)) {
|
||||
expressions.add(named.value);
|
||||
}
|
||||
|
||||
@@ -286,7 +286,7 @@ class ConstantWeakener extends ComputeOnceConstantVisitor<Constant?> {
|
||||
Reference reference = entry.key;
|
||||
Constant? value = visitConstant(entry.value);
|
||||
if (value != null) {
|
||||
fieldValues ??= new Map<Reference, Constant>.from(node.fieldValues);
|
||||
fieldValues ??= new Map<Reference, Constant>.of(node.fieldValues);
|
||||
fieldValues[reference] = value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -374,7 +374,7 @@ class Forest {
|
||||
for (int i = 0; i < statements.length; i++) {
|
||||
Statement statement = statements[i];
|
||||
if (statement is _VariablesDeclaration) {
|
||||
copy ??= new List<Statement>.from(statements.getRange(0, i));
|
||||
copy ??= new List<Statement>.of(statements.getRange(0, i));
|
||||
copy.addAll(statement.declarations);
|
||||
} else if (copy != null) {
|
||||
copy.add(statement);
|
||||
@@ -592,7 +592,7 @@ class Forest {
|
||||
Statement wrapVariables(Statement statement) {
|
||||
if (statement is _VariablesDeclaration) {
|
||||
return new Block(
|
||||
new List<Statement>.from(statement.declarations, growable: true))
|
||||
new List<Statement>.of(statement.declarations, growable: true))
|
||||
..fileOffset = statement.fileOffset;
|
||||
} else if (statement is VariableDeclaration) {
|
||||
return new Block(<Statement>[statement])
|
||||
|
||||
@@ -2352,7 +2352,7 @@ class ClassMembersNodeBuilder {
|
||||
}
|
||||
}
|
||||
if (contextMap.isEmpty) return;
|
||||
List<String> names = new List<String>.from(contextMap.keys)..sort();
|
||||
List<String> names = new List<String>.of(contextMap.keys)..sort();
|
||||
List<LocatedMessage> context = <LocatedMessage>[];
|
||||
for (int i = 0; i < names.length; i++) {
|
||||
context.add(contextMap[names[i]]!);
|
||||
|
||||
@@ -412,7 +412,7 @@ class KernelTarget extends TargetImplementation {
|
||||
installSyntheticConstructors(sourceClassBuilders);
|
||||
loader.resolveConstructors();
|
||||
component =
|
||||
link(new List<Library>.from(loader.libraries), nameRoot: nameRoot);
|
||||
link(new List<Library>.of(loader.libraries), nameRoot: nameRoot);
|
||||
computeCoreTypes();
|
||||
loader.buildClassHierarchy(sourceClassBuilders, objectClassBuilder);
|
||||
loader.checkSupertypes(sourceClassBuilders, enumClass);
|
||||
|
||||
@@ -2382,10 +2382,10 @@ class SourceClassBuilder extends ClassBuilderImpl
|
||||
}
|
||||
|
||||
List<VariableDeclaration> sortedFromDeclared =
|
||||
new List.from(declaredFunction.namedParameters)
|
||||
new List.of(declaredFunction.namedParameters)
|
||||
..sort(compareNamedParameters);
|
||||
List<VariableDeclaration> sortedFromInterface =
|
||||
new List.from(interfaceFunction.namedParameters)
|
||||
new List.of(interfaceFunction.namedParameters)
|
||||
..sort(compareNamedParameters);
|
||||
Iterator<VariableDeclaration> declaredNamedParameters =
|
||||
sortedFromDeclared.iterator;
|
||||
|
||||
@@ -681,7 +681,7 @@ class DeclaredSourceConstructorBuilder extends SourceFunctionBuilderImpl
|
||||
|
||||
void ensureGrowableFormals() {
|
||||
if (formals != null) {
|
||||
formals = new List<FormalParameterBuilder>.from(formals!, growable: true);
|
||||
formals = new List<FormalParameterBuilder>.of(formals!, growable: true);
|
||||
} else {
|
||||
formals = <FormalParameterBuilder>[];
|
||||
}
|
||||
|
||||
@@ -1836,7 +1836,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
||||
classScope,
|
||||
constructorScope,
|
||||
this,
|
||||
new List<ConstructorReferenceBuilder>.from(constructorReferences),
|
||||
new List<ConstructorReferenceBuilder>.of(constructorReferences),
|
||||
startOffset,
|
||||
nameOffset,
|
||||
endOffset,
|
||||
|
||||
@@ -885,7 +885,7 @@ severity: $severity
|
||||
// setting a breakpoint on line 42 of some import uri mean, if the uri
|
||||
// represented several files?
|
||||
List<String> newPathSegments =
|
||||
new List<String>.from(importUri.pathSegments);
|
||||
new List<String>.of(importUri.pathSegments);
|
||||
newPathSegments.add(library.fileUri.pathSegments.last);
|
||||
newPathSegments[0] = "${newPathSegments[0]}-patch";
|
||||
importUri = importUri.replace(pathSegments: newPathSegments);
|
||||
|
||||
@@ -183,7 +183,7 @@ Future<CompilerResult> generateKernelInternal(
|
||||
includeHierarchyAndCoreTypes ? kernelTarget.loader.hierarchy : null,
|
||||
coreTypes:
|
||||
includeHierarchyAndCoreTypes ? kernelTarget.loader.coreTypes : null,
|
||||
deps: new List<Uri>.from(CompilerContext.current.dependencies),
|
||||
deps: new List<Uri>.of(CompilerContext.current.dependencies),
|
||||
kernelTargetForTesting: retainDataForTesting ? kernelTarget : null);
|
||||
}, () => sourceLoader?.currentUriForCrashReporting ?? options.inputs.first);
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ Set<Object> missingNodes($visitorName visitor) {
|
||||
/// Returns the set of [${innerName}Kind]s that were not visited by [visitor].
|
||||
Set<${innerName}Kind> missing${innerName}s($visitorName visitor) {
|
||||
Set<${innerName}Kind> all =
|
||||
new Set<${innerName}Kind>.from(${innerName}Kind.values);
|
||||
new Set<${innerName}Kind>.of(${innerName}Kind.values);
|
||||
all.removeAll(visitor.visited);
|
||||
return all;
|
||||
}''');
|
||||
|
||||
@@ -3740,7 +3740,7 @@ class FunctionNode extends TreeNode {
|
||||
named.sort();
|
||||
// We need create a copy of the list of type parameters, otherwise
|
||||
// transformations like erasure don't work.
|
||||
List<TypeParameter> typeParametersCopy = new List<TypeParameter>.from(
|
||||
List<TypeParameter> typeParametersCopy = new List<TypeParameter>.of(
|
||||
parent is Constructor
|
||||
? parent.enclosingClass.typeParameters
|
||||
: typeParameters);
|
||||
@@ -3790,9 +3790,9 @@ class FunctionNode extends TreeNode {
|
||||
// We need create a copy of the list of type parameters, otherwise
|
||||
// transformations like erasure don't work.
|
||||
List<TypeParameter> classTypeParametersCopy =
|
||||
List.from(parentConstructor.enclosingClass.typeParameters);
|
||||
List.of(parentConstructor.enclosingClass.typeParameters);
|
||||
List<TypeParameter> typedefTypeParametersCopy =
|
||||
List.from(typedef.typeParameters);
|
||||
List.of(typedef.typeParameters);
|
||||
List<DartType> asTypeArguments =
|
||||
getAsTypeArguments(typedefTypeParametersCopy, library);
|
||||
TypedefType typedefType =
|
||||
@@ -3834,9 +3834,9 @@ class FunctionNode extends TreeNode {
|
||||
"Only run this method on a factory");
|
||||
// We need create a copy of the list of type parameters, otherwise
|
||||
// transformations like erasure don't work.
|
||||
List<TypeParameter> classTypeParametersCopy = List.from(typeParameters);
|
||||
List<TypeParameter> classTypeParametersCopy = List.of(typeParameters);
|
||||
List<TypeParameter> typedefTypeParametersCopy =
|
||||
List.from(typedef.typeParameters);
|
||||
List.of(typedef.typeParameters);
|
||||
List<DartType> asTypeArguments =
|
||||
getAsTypeArguments(typedefTypeParametersCopy, library);
|
||||
TypedefType typedefType =
|
||||
|
||||
@@ -598,7 +598,7 @@ class BinaryBuilder {
|
||||
_byteOffset = start - 4;
|
||||
}
|
||||
_byteOffset = savedByteOffset;
|
||||
return new List.from(index.reversed);
|
||||
return new List.of(index.reversed);
|
||||
}
|
||||
|
||||
void _checkEmptyInput() {
|
||||
|
||||
@@ -929,7 +929,7 @@ class ClosedWorldClassHierarchy implements ClassHierarchy {
|
||||
if (_recordedAmbiguousSupertypes.isNotEmpty &&
|
||||
reissueAmbiguousSupertypesFor != null) {
|
||||
Set<Library> libs =
|
||||
new Set<Library>.from(reissueAmbiguousSupertypesFor.libraries);
|
||||
new Set<Library>.of(reissueAmbiguousSupertypesFor.libraries);
|
||||
for (Class class_ in _recordedAmbiguousSupertypes.keys) {
|
||||
if (!libs.contains(class_.enclosingLibrary)) continue;
|
||||
List<Supertype> recorded = _recordedAmbiguousSupertypes[class_]!;
|
||||
@@ -1714,7 +1714,7 @@ class ClassSet extends IterableBase<Class> {
|
||||
}
|
||||
|
||||
ClassSet union(ClassSet other) {
|
||||
Set<Class> result = new Set<Class>.from(_classes);
|
||||
Set<Class> result = new Set<Class>.of(_classes);
|
||||
result.addAll(other._classes);
|
||||
return new ClassSet(result);
|
||||
}
|
||||
|
||||
@@ -468,7 +468,7 @@ class CloneVisitorNotMembers implements TreeVisitor<TreeNode> {
|
||||
for (SwitchCase switchCase in node.cases) {
|
||||
switchCases[switchCase] = new SwitchCase(
|
||||
switchCase.expressions.map(clone).toList(),
|
||||
new List<int>.from(switchCase.expressionOffsets),
|
||||
new List<int>.of(switchCase.expressionOffsets),
|
||||
dummyStatement,
|
||||
isDefault: switchCase.isDefault);
|
||||
}
|
||||
|
||||
@@ -1145,7 +1145,7 @@ Set<Object> missingNodes(CoverageVisitor visitor) {
|
||||
|
||||
/// Returns the set of [MemberKind]s that were not visited by [visitor].
|
||||
Set<MemberKind> missingMembers(CoverageVisitor visitor) {
|
||||
Set<MemberKind> all = new Set<MemberKind>.from(MemberKind.values);
|
||||
Set<MemberKind> all = new Set<MemberKind>.of(MemberKind.values);
|
||||
all.removeAll(visitor.visited);
|
||||
return all;
|
||||
}
|
||||
@@ -1153,35 +1153,35 @@ Set<MemberKind> missingMembers(CoverageVisitor visitor) {
|
||||
/// Returns the set of [InitializerKind]s that were not visited by [visitor].
|
||||
Set<InitializerKind> missingInitializers(CoverageVisitor visitor) {
|
||||
Set<InitializerKind> all =
|
||||
new Set<InitializerKind>.from(InitializerKind.values);
|
||||
new Set<InitializerKind>.of(InitializerKind.values);
|
||||
all.removeAll(visitor.visited);
|
||||
return all;
|
||||
}
|
||||
|
||||
/// Returns the set of [ExpressionKind]s that were not visited by [visitor].
|
||||
Set<ExpressionKind> missingExpressions(CoverageVisitor visitor) {
|
||||
Set<ExpressionKind> all = new Set<ExpressionKind>.from(ExpressionKind.values);
|
||||
Set<ExpressionKind> all = new Set<ExpressionKind>.of(ExpressionKind.values);
|
||||
all.removeAll(visitor.visited);
|
||||
return all;
|
||||
}
|
||||
|
||||
/// Returns the set of [StatementKind]s that were not visited by [visitor].
|
||||
Set<StatementKind> missingStatements(CoverageVisitor visitor) {
|
||||
Set<StatementKind> all = new Set<StatementKind>.from(StatementKind.values);
|
||||
Set<StatementKind> all = new Set<StatementKind>.of(StatementKind.values);
|
||||
all.removeAll(visitor.visited);
|
||||
return all;
|
||||
}
|
||||
|
||||
/// Returns the set of [DartTypeKind]s that were not visited by [visitor].
|
||||
Set<DartTypeKind> missingDartTypes(CoverageVisitor visitor) {
|
||||
Set<DartTypeKind> all = new Set<DartTypeKind>.from(DartTypeKind.values);
|
||||
Set<DartTypeKind> all = new Set<DartTypeKind>.of(DartTypeKind.values);
|
||||
all.removeAll(visitor.visited);
|
||||
return all;
|
||||
}
|
||||
|
||||
/// Returns the set of [ConstantKind]s that were not visited by [visitor].
|
||||
Set<ConstantKind> missingConstants(CoverageVisitor visitor) {
|
||||
Set<ConstantKind> all = new Set<ConstantKind>.from(ConstantKind.values);
|
||||
Set<ConstantKind> all = new Set<ConstantKind>.of(ConstantKind.values);
|
||||
all.removeAll(visitor.visited);
|
||||
return all;
|
||||
}
|
||||
|
||||
@@ -849,7 +849,7 @@ mixin StandardBounds {
|
||||
int n = klass.typeParameters.length;
|
||||
List<DartType> leftArguments = type1.typeArguments;
|
||||
List<DartType> rightArguments = type2.typeArguments;
|
||||
List<DartType> typeArguments = new List<DartType>.from(leftArguments);
|
||||
List<DartType> typeArguments = new List<DartType>.of(leftArguments);
|
||||
for (int i = 0; i < n; ++i) {
|
||||
int variance = klass.typeParameters[i].variance;
|
||||
if (variance == Variance.contravariant) {
|
||||
|
||||
@@ -1070,7 +1070,7 @@ mixin SummaryMixin on Target {
|
||||
super.performOutlineTransformations(component);
|
||||
if (!excludeNonSources) return;
|
||||
|
||||
List<Library> libraries = new List.from(component.libraries);
|
||||
List<Library> libraries = new List.of(component.libraries);
|
||||
component.libraries.clear();
|
||||
Set<Uri> include = sources.toSet();
|
||||
for (Library library in libraries) {
|
||||
|
||||
@@ -227,7 +227,7 @@ Set<T> calculateTransitiveDependenciesOf<T>(Graph<T> graph, Set<T> vertices) {
|
||||
}
|
||||
|
||||
// Collect and remove all dependencies.
|
||||
Set<T> left = new Set<T>.from(graph.vertices);
|
||||
Set<T> left = new Set<T>.of(graph.vertices);
|
||||
Set<T> transitive = {};
|
||||
while (workList.isNotEmpty) {
|
||||
T removed = workList.removeLast();
|
||||
|
||||
Reference in New Issue
Block a user