Make local variables that hide fields be final (analysis_server)

As per our earlier conversation, I looked for places where a local
variable was introduced to overcome field promotion and has the same
name as the field. Where possible I made them final; where not possible
I changed the name.

Change-Id: Iad3d2139693ca66f1eb22a3926c3b84a4115f13d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196552
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Brian Wilkerson 2021-04-24 18:12:07 +00:00 committed by commit-bot@chromium.org
parent 3498404125
commit 1ad68b9b16
66 changed files with 176 additions and 173 deletions

View file

@ -32,7 +32,7 @@ class InstrumentationInputConverter extends CommonInputConverter {
try {
fields = _parseFields(line);
if (fields.length < 2) {
var readBuffer = this.readBuffer;
final readBuffer = this.readBuffer;
if (readBuffer != null) {
readBuffer.writeln(fields.length == 1 ? fields[0] : '');
return null;

View file

@ -46,7 +46,7 @@ class Notification {
Map<String, Object> toJson() {
var jsonObject = <String, Object>{};
jsonObject[EVENT] = event;
var params = this.params;
final params = this.params;
if (params != null) {
jsonObject[PARAMS] = params;
}
@ -114,7 +114,7 @@ class Request {
if (params.isNotEmpty) {
jsonObject[PARAMS] = params;
}
var clientRequestTime = this.clientRequestTime;
final clientRequestTime = this.clientRequestTime;
if (clientRequestTime != null) {
jsonObject[CLIENT_REQUEST_TIME] = clientRequestTime;
}
@ -505,11 +505,11 @@ class Response {
Map<String, Object> toJson() {
var jsonObject = <String, Object>{};
jsonObject[ID] = id;
var error = this.error;
final error = this.error;
if (error != null) {
jsonObject[ERROR] = error.toJson();
}
var result = this.result;
final result = this.result;
if (result != null) {
jsonObject[RESULT] = result;
}

View file

@ -1227,7 +1227,7 @@ class _RefactoringManager {
initStatus = await refactoring.checkInitialConditions();
_checkForReset_afterInitialConditions();
if (refactoring is ExtractLocalRefactoring) {
var feedback = this.feedback as ExtractLocalVariableFeedback;
final feedback = this.feedback as ExtractLocalVariableFeedback;
feedback.names = refactoring.names;
feedback.offsets = refactoring.offsets;
feedback.lengths = refactoring.lengths;
@ -1236,7 +1236,7 @@ class _RefactoringManager {
feedback.coveringExpressionLengths =
refactoring.coveringExpressionLengths;
} else if (refactoring is ExtractMethodRefactoring) {
var feedback = this.feedback as ExtractMethodFeedback;
final feedback = this.feedback as ExtractMethodFeedback;
feedback.canCreateGetter = refactoring.canCreateGetter;
feedback.returnType = refactoring.returnType;
feedback.names = refactoring.names;
@ -1255,7 +1255,7 @@ class _RefactoringManager {
className: refactoring.className);
}
} else if (refactoring is RenameRefactoring) {
var feedback = this.feedback as RenameFeedback;
final feedback = this.feedback as RenameFeedback;
feedback.elementKindName = refactoring.elementKindName;
feedback.oldName = refactoring.oldName;
}

View file

@ -901,7 +901,7 @@ class PluginSession {
/// Send a request, based on the given [parameters]. Return a future that will
/// complete when a response is received.
Future<Response> sendRequest(RequestParams parameters) {
var channel = this.channel;
final channel = this.channel;
if (channel == null) {
throw StateError('Cannot send a request to a plugin that has stopped.');
}

View file

@ -133,7 +133,7 @@ class ArgListContributor extends DartCompletionContributor {
/// Return the number of arguments in the argument list.
int _argCount() {
var argumentList = this.argumentList;
final argumentList = this.argumentList;
if (argumentList != null) {
var paren = argumentList.rightParenthesis;
if (request.target.entity == paren) {
@ -159,7 +159,7 @@ class ArgListContributor extends DartCompletionContributor {
/// Return `true` if the caret is preceding an arg where a name could be added
/// (turning a positional arg into a named arg).
bool _isAddingLabelToPositional() {
var argumentList = this.argumentList;
final argumentList = this.argumentList;
if (argumentList != null) {
var entity = request.target.entity;
if (entity is! Expression) {
@ -194,7 +194,7 @@ class ArgListContributor extends DartCompletionContributor {
/// Return `true` if the completion target is at the end of the list of
/// arguments.
bool _isAppendingToArgList() {
var argumentList = this.argumentList;
final argumentList = this.argumentList;
if (argumentList != null) {
var entity = request.target.entity;
if (entity == argumentList.rightParenthesis) {
@ -275,7 +275,7 @@ class ArgListContributor extends DartCompletionContributor {
/// [_isInsertingToArgListWithNoSynthetic] have been called and both returned
/// `false`.
bool _isInsertingToArgListWithSynthetic() {
var argumentList = this.argumentList;
final argumentList = this.argumentList;
if (argumentList != null) {
var entity = request.target.entity;
if (entity is SimpleIdentifier) {
@ -295,7 +295,7 @@ class ArgListContributor extends DartCompletionContributor {
/// Return a list containing the currently specified named arguments.
List<String> _namedArgs() {
var namedArgs = <String>[];
var argumentList = this.argumentList;
final argumentList = this.argumentList;
if (argumentList != null) {
for (var arg in argumentList.arguments) {
if (arg is NamedExpression) {

View file

@ -199,7 +199,8 @@ class DartCompletionManager {
}
void _addIncludedSuggestionRelevanceTags(DartCompletionRequestImpl request) {
var includedSuggestionRelevanceTags = this.includedSuggestionRelevanceTags!;
final includedSuggestionRelevanceTags =
this.includedSuggestionRelevanceTags!;
var location = request.opType.completionLocation;
if (location != null) {
var locationTable = elementKindRelevance[location];

View file

@ -1015,7 +1015,7 @@ extension on AstNode {
extension on ArgumentList {
/// Return the [FunctionType], if there is one, for this [ArgumentList].
FunctionType? get functionType {
var parent = this.parent;
final parent = this.parent;
if (parent is InstanceCreationExpression) {
return parent.constructorName.staticElement?.type;
} else if (parent is MethodInvocation) {

View file

@ -56,7 +56,7 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
return;
}
}
var entity = this.entity;
final entity = this.entity;
if (entity == node.rightParenthesis) {
_addExpressionKeywords(node);
var previous = node.findPrevious(entity as Token);
@ -142,7 +142,7 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
@override
void visitClassDeclaration(ClassDeclaration node) {
var entity = this.entity;
final entity = this.entity;
// Don't suggest class name
if (entity == node.name) {
return;
@ -544,7 +544,7 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
@override
void visitMixinDeclaration(MixinDeclaration node) {
var entity = this.entity;
final entity = this.entity;
// Don't suggest mixin name
if (entity == node.name) {
return;
@ -906,7 +906,7 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
if (block == null) {
return false;
}
var entity = this.entity;
final entity = this.entity;
if (entity is Statement) {
var entityIndex = block.statements.indexOf(entity);
if (entityIndex > 0) {

View file

@ -373,7 +373,7 @@ abstract class _AbstractCorrectionProducer {
AstNode? get coveredNode {
// TODO(brianwilkerson) Consider renaming this to `coveringNode`.
if (_coveredNode == null) {
var diagnostic = this.diagnostic;
final diagnostic = this.diagnostic;
if (diagnostic == null) {
return null;
}

View file

@ -46,7 +46,7 @@ class AddAsync extends CorrectionProducer {
} else {
var body = node.thisOrAncestorOfType<FunctionBody>();
if (body != null && body.keyword == null) {
var typeProvider = this.typeProvider;
final typeProvider = this.typeProvider;
await builder.addDartFileEdit(file, (builder) {
builder.convertFunctionFromSyncToAsync(body, typeProvider);
});

View file

@ -17,27 +17,27 @@ class AddConst extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
AstNode? node = this.node;
if (node is SimpleIdentifier) {
node = node.parent;
AstNode? targetNode = node;
if (targetNode is SimpleIdentifier) {
targetNode = targetNode.parent;
}
if (node is ConstructorDeclaration) {
var node_final = node;
if (targetNode is ConstructorDeclaration) {
var node_final = targetNode;
await builder.addDartFileEdit(file, (builder) {
final offset = node_final.firstTokenAfterCommentAndMetadata.offset;
builder.addSimpleInsertion(offset, 'const ');
});
return;
}
if (node is TypeName) {
node = node.parent;
if (targetNode is TypeName) {
targetNode = targetNode.parent;
}
if (node is ConstructorName) {
node = node.parent;
if (targetNode is ConstructorName) {
targetNode = targetNode.parent;
}
if (node is InstanceCreationExpression) {
if (node.keyword == null) {
var node_final = node;
if (targetNode is InstanceCreationExpression) {
if (targetNode.keyword == null) {
var node_final = targetNode;
await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion(node_final.offset, 'const ');
});

View file

@ -21,7 +21,7 @@ class AddLate extends CorrectionProducer {
if (!libraryElement.isNonNullableByDefault) {
return;
}
var node = this.node;
final node = this.node;
if (node is SimpleIdentifier) {
var variable = node.parent;
var variableList = variable?.parent;

View file

@ -21,7 +21,7 @@ class AddMissingParameterNamed extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
// Prepare the name of the missing parameter.
var node = this.node;
final node = this.node;
if (node is! SimpleIdentifier) {
return;
}

View file

@ -42,7 +42,7 @@ class AddMissingRequiredArgument extends CorrectionProducer {
}
}
var diagnostic = this.diagnostic;
final diagnostic = this.diagnostic;
if (diagnostic == null) {
return;
}

View file

@ -20,7 +20,7 @@ class AddNeNull extends CorrectionProducerWithDiagnostic {
@override
Future<void> compute(ChangeBuilder builder) async {
if (unit.featureSet.isEnabled(Feature.non_nullable)) {
var node = this.node;
final node = this.node;
if (node is Expression &&
node.staticType?.nullabilitySuffix == NullabilitySuffix.none) {
return;

View file

@ -23,7 +23,7 @@ class AddNullCheck extends CorrectionProducer {
return;
}
Expression? target;
var coveredNode = this.coveredNode;
final coveredNode = this.coveredNode;
var coveredNodeParent = coveredNode?.parent;
if (coveredNode is SimpleIdentifier) {
if (coveredNodeParent is MethodInvocation) {

View file

@ -27,7 +27,7 @@ class AddTypeAnnotation extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is SimpleIdentifier) {
var parent = node.parent;
if (parent is SimpleFormalParameter) {

View file

@ -53,7 +53,7 @@ class ChangeArgumentName extends MultiCorrectionProducer {
}
_NamedExpressionContext? _getNamedParameterNames() {
var node = this.node;
final node = this.node;
var namedExpression = node.parent?.parent;
if (node is SimpleIdentifier &&
namedExpression is NamedExpression &&

View file

@ -53,7 +53,7 @@ class ChangeTo extends CorrectionProducer {
}
Future<void> _proposeAnnotation(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is Annotation) {
var name = node.name;
if (name.staticElement == null) {
@ -105,7 +105,7 @@ class ChangeTo extends CorrectionProducer {
Future<void> _proposeClassOrMixinMember(ChangeBuilder builder,
Expression? target, _ElementPredicate predicate) async {
var node = this.node;
final node = this.node;
var targetIdentifierElement =
target is Identifier ? target.staticElement : null;
if (node is SimpleIdentifier) {
@ -139,7 +139,7 @@ class ChangeTo extends CorrectionProducer {
}
Future<void> _proposeFunction(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is SimpleIdentifier) {
// Prepare the optional import prefix name.
String? prefixName;
@ -181,7 +181,7 @@ class ChangeTo extends CorrectionProducer {
}
Future<void> _proposeGetterOrSetter(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is SimpleIdentifier) {
// prepare target
Expression? target;

View file

@ -21,7 +21,7 @@ class ConvertIntoIsNot extends CorrectionProducer {
// Find the is expression
var isExpression = node.thisOrAncestorOfType<IsExpression>();
if (isExpression == null) {
var node = this.node;
final node = this.node;
if (node is PrefixExpression) {
var operand = node.operand;
if (operand is ParenthesizedExpression) {

View file

@ -20,7 +20,7 @@ abstract class ConvertQuotes extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is SimpleStringLiteral) {
await _simpleStringLiteral(builder, node);
} else if (node is StringInterpolation) {

View file

@ -19,7 +19,7 @@ class ConvertToIfNull extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is ConditionalExpression &&
node.offset == errorOffset &&
node.length == errorLength) {

View file

@ -15,12 +15,12 @@ class ConvertToMultilineString extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
if (node is InterpolationElement) {
node = node.parent!;
var targetNode = node;
if (targetNode is InterpolationElement) {
targetNode = targetNode.parent!;
}
if (node is SingleStringLiteral) {
var literal = node;
if (targetNode is SingleStringLiteral) {
var literal = targetNode;
if (!literal.isSynthetic && !literal.isMultiline) {
await builder.addDartFileEdit(file, (builder) {
var newQuote = literal.isSingleQuoted ? "'''" : '"""';

View file

@ -25,18 +25,18 @@ class ConvertToNullAware extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
var parent = node.parent;
var targetNode = node;
var parent = targetNode.parent;
if (parent is BinaryExpression) {
var grandParent = parent.parent;
if (grandParent is ConditionalExpression) {
node = grandParent;
targetNode = grandParent;
}
}
if (node is! ConditionalExpression) {
if (targetNode is! ConditionalExpression) {
return;
}
var condition = node.condition.unParenthesized;
var condition = targetNode.condition.unParenthesized;
SimpleIdentifier identifier;
Expression nullExpression;
Expression nonNullExpression;
@ -67,11 +67,11 @@ class ConvertToNullAware extends CorrectionProducer {
// is the save variable being compared to `null`.
//
if (condition.operator.type == TokenType.EQ_EQ) {
nullExpression = node.thenExpression;
nonNullExpression = node.elseExpression;
nullExpression = targetNode.thenExpression;
nonNullExpression = targetNode.elseExpression;
} else if (condition.operator.type == TokenType.BANG_EQ) {
nonNullExpression = node.thenExpression;
nullExpression = node.elseExpression;
nonNullExpression = targetNode.thenExpression;
nullExpression = targetNode.elseExpression;
} else {
return;
}
@ -100,9 +100,9 @@ class ConvertToNullAware extends CorrectionProducer {
periodOffset = operator.offset;
await builder.addDartFileEdit(file, (builder) {
builder.addDeletion(range.startStart(node, nonNullExpression));
builder.addDeletion(range.startStart(targetNode, nonNullExpression));
builder.addSimpleInsertion(periodOffset, '?');
builder.addDeletion(range.endEnd(nonNullExpression, node));
builder.addDeletion(range.endEnd(nonNullExpression, targetNode));
});
}
}

View file

@ -23,12 +23,12 @@ class ConvertToPackageImport extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
if (node is StringLiteral) {
node = node.parent!;
var targetNode = node;
if (targetNode is StringLiteral) {
targetNode = targetNode.parent!;
}
if (node is ImportDirective) {
var importDirective = node;
if (targetNode is ImportDirective) {
var importDirective = targetNode;
var uriSource = importDirective.uriSource;
// Ignore if invalid URI.

View file

@ -24,16 +24,16 @@ class ConvertToRelativeImport extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
if (node is StringLiteral) {
node = node.parent!;
var targetNode = node;
if (targetNode is StringLiteral) {
targetNode = targetNode.parent!;
}
if (node is! ImportDirective) {
if (targetNode is! ImportDirective) {
return;
}
// Ignore if invalid URI.
if (node.uriSource == null) {
if (targetNode.uriSource == null) {
return;
}
@ -45,7 +45,7 @@ class ConvertToRelativeImport extends CorrectionProducer {
Uri importUri;
try {
var uriContent = node.uriContent;
var uriContent = targetNode.uriContent;
if (uriContent == null) {
return;
}
@ -75,7 +75,7 @@ class ConvertToRelativeImport extends CorrectionProducer {
from: path.dirname(sourceUri.path),
);
final node_final = node;
final node_final = targetNode;
await builder.addDartFileEdit(file, (builder) {
builder.addSimpleReplacement(
range.node(node_final.uri).getExpanded(-1),

View file

@ -22,29 +22,29 @@ class CreateClass extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
var targetNode = node;
Element? prefixElement;
SimpleIdentifier nameNode;
ArgumentList? arguments;
if (node is Annotation) {
var name = node.name;
arguments = node.arguments;
if (targetNode is Annotation) {
var name = targetNode.name;
arguments = targetNode.arguments;
if (name.staticElement != null || arguments == null) {
// TODO(brianwilkerson) Consider supporting creating a class when the
// arguments are missing by also adding an empty argument list.
return;
}
node = name;
targetNode = name;
}
if (node is SimpleIdentifier) {
nameNode = node;
} else if (node is PrefixedIdentifier) {
prefixElement = node.prefix.staticElement;
if (targetNode is SimpleIdentifier) {
nameNode = targetNode;
} else if (targetNode is PrefixedIdentifier) {
prefixElement = targetNode.prefix.staticElement;
if (prefixElement == null) {
return;
}
nameNode = node.identifier;
nameNode = targetNode.identifier;
} else {
return;
}
@ -60,7 +60,7 @@ class CreateClass extends CorrectionProducer {
String? filePath;
if (prefixElement == null) {
targetUnit = unit.declaredElement!;
var enclosingMember = node.thisOrAncestorMatching((node) =>
var enclosingMember = targetNode.thisOrAncestorMatching((node) =>
node is CompilationUnitMember && node.parent is CompilationUnit);
if (enclosingMember == null) {
return;
@ -111,7 +111,7 @@ class CreateClass extends CorrectionProducer {
builder.write(suffix);
});
if (prefixElement == null) {
builder.addLinkedPosition(range.node(node), 'NAME');
builder.addLinkedPosition(range.node(targetNode), 'NAME');
}
});
}

View file

@ -95,7 +95,7 @@ class CreateMethod extends CorrectionProducer {
CompilationUnitMember? targetNode;
var target = invocation.realTarget;
var utils = this.utils;
var utilsForTargetNode = utils;
if (target is ExtensionOverride) {
targetElement = target.staticElement;
if (targetElement is ExtensionElement) {
@ -152,12 +152,13 @@ class CreateMethod extends CorrectionProducer {
if (targetResolveResult is! ResolvedUnitResult) {
return;
}
utils = CorrectionUtils(targetResolveResult);
utilsForTargetNode = CorrectionUtils(targetResolveResult);
}
if (targetElement == null || targetNode == null) {
return;
}
var targetLocation = utils.prepareNewMethodLocation(targetNode);
var targetLocation =
utilsForTargetNode.prepareNewMethodLocation(targetNode);
if (targetLocation == null) {
return;
}

View file

@ -24,7 +24,7 @@ class CreateMixin extends CorrectionProducer {
Future<void> compute(ChangeBuilder builder) async {
Element? prefixElement;
SimpleIdentifier nameNode;
var node = this.node;
final node = this.node;
if (node is SimpleIdentifier) {
var parent = node.parent;
var grandParent = parent?.parent;

View file

@ -54,7 +54,7 @@ class DataDriven extends MultiCorrectionProducer {
return setsForTests;
}
var transformSets = TransformSetManager.instance.forLibrary(library);
var overrideSet = this.overrideSet;
final overrideSet = this.overrideSet;
if (overrideSet != null) {
transformSets =
transformSets.map((set) => set.applyOverrides(overrideSet)).toList();

View file

@ -19,7 +19,7 @@ class ExtendClassForMixin extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var diagnostic = this.diagnostic;
final diagnostic = this.diagnostic;
if (diagnostic == null) {
return;
}

View file

@ -18,7 +18,7 @@ class FlutterConvertToChildren extends CorrectionProducer {
// Find "child: widget" under selection.
NamedExpression namedExp;
{
var node = this.node;
final node = this.node;
var parent = node.parent;
var parent2 = parent?.parent;
if (node is SimpleIdentifier &&

View file

@ -52,44 +52,44 @@ class ImportLibrary extends MultiCorrectionProducer {
]);
}
} else if (_importKind == _ImportKind.forTopLevelVariable) {
var node = this.node;
if (node is Annotation) {
var name = node.name;
var targetNode = node;
if (targetNode is Annotation) {
var name = targetNode.name;
if (name.staticElement == null) {
if (node.arguments != null) {
if (targetNode.arguments != null) {
return;
}
node = name;
targetNode = name;
}
}
if (node is SimpleIdentifier) {
var name = node.name;
if (targetNode is SimpleIdentifier) {
var name = targetNode.name;
yield* _importLibraryForElement(
name,
const [ElementKind.TOP_LEVEL_VARIABLE],
const [TopLevelDeclarationKind.variable]);
}
} else if (_importKind == _ImportKind.forType) {
var node = this.node;
if (node is Annotation) {
var name = node.name;
var targetNode = node;
if (targetNode is Annotation) {
var name = targetNode.name;
if (name.staticElement == null) {
if (node.arguments == null) {
if (targetNode.arguments == null) {
return;
}
node = name;
targetNode = name;
}
}
if (mightBeTypeIdentifier(node)) {
var typeName = (node is SimpleIdentifier)
? node.name
: (node as PrefixedIdentifier).prefix.name;
if (mightBeTypeIdentifier(targetNode)) {
var typeName = (targetNode is SimpleIdentifier)
? targetNode.name
: (targetNode as PrefixedIdentifier).prefix.name;
yield* _importLibraryForElement(
typeName,
const [ElementKind.CLASS, ElementKind.FUNCTION_TYPE_ALIAS],
const [TopLevelDeclarationKind.type]);
} else if (mightBeImplicitConstructor(node)) {
var typeName = (node as SimpleIdentifier).name;
} else if (mightBeImplicitConstructor(targetNode)) {
var typeName = (targetNode as SimpleIdentifier).name;
yield* _importLibraryForElement(typeName, const [ElementKind.CLASS],
const [TopLevelDeclarationKind.type]);
}

View file

@ -29,7 +29,7 @@ class InlineInvocation extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is! SimpleIdentifier || node.name != 'add') {
return;
}

View file

@ -14,7 +14,7 @@ class InsertSemicolon extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var diagnostic = this.diagnostic;
final diagnostic = this.diagnostic;
if (diagnostic == null) {
return;
}
@ -32,7 +32,7 @@ class InsertSemicolon extends CorrectionProducer {
}
bool _isAwaitNode() {
var node = this.node;
final node = this.node;
return node is SimpleIdentifier && node.name == 'await';
}

View file

@ -16,7 +16,7 @@ class JoinVariableDeclaration extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is SimpleIdentifier) {
var parent = node.parent;
if (parent is AssignmentExpression &&

View file

@ -23,7 +23,7 @@ class MakeFieldNotFinal extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is! SimpleIdentifier) {
return;
}

View file

@ -19,7 +19,7 @@ class MakeFinal extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
var parent = node.parent;
var grandParent = parent?.parent;

View file

@ -20,7 +20,7 @@ class MakeReturnTypeNullable extends CorrectionProducer {
return;
}
var node = this.node;
final node = this.node;
if (node is! Expression) {
return;
}

View file

@ -23,7 +23,7 @@ class MakeVariableNotFinal extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is! SimpleIdentifier) {
return;
}

View file

@ -16,7 +16,7 @@ class RemoveDeadCode extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var coveredNode = this.coveredNode;
final coveredNode = this.coveredNode;
var parent = coveredNode?.parent;
if (coveredNode is Expression) {

View file

@ -18,7 +18,7 @@ class RemoveInterpolationBraces extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is InterpolationExpression) {
var right = node.rightBracket;
if (right != null) {

View file

@ -15,7 +15,7 @@ class RemoveParametersInGetterDeclaration extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is MethodDeclaration) {
// Support for the analyzer error.
var name = node.name;

View file

@ -18,17 +18,17 @@ class RemoveQuestionMark extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
AstNode? node = this.node;
if (node is VariableDeclaration) {
var parent = node.parent;
AstNode? targetNode = node;
if (targetNode is VariableDeclaration) {
var parent = targetNode.parent;
if (parent is VariableDeclarationList) {
node = parent.type;
targetNode = parent.type;
} else {
return;
}
}
if (node is TypeName) {
var questionMark = node.question;
if (targetNode is TypeName) {
var questionMark = targetNode.question;
if (questionMark == null) {
return;
}

View file

@ -18,7 +18,7 @@ class RemoveThisExpression extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
if (node is ConstructorFieldInitializer) {
var thisKeyword = node.thisKeyword;
if (thisKeyword != null) {

View file

@ -18,12 +18,12 @@ class ReplaceNewWithConst extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
AstNode? node = this.node;
if (node is ConstructorName) {
node = node.parent;
AstNode? targetNode = node;
if (targetNode is ConstructorName) {
targetNode = targetNode.parent;
}
if (node is InstanceCreationExpression) {
final keyword = node.keyword;
if (targetNode is InstanceCreationExpression) {
final keyword = targetNode.keyword;
if (keyword != null) {
await builder.addDartFileEdit(file, (builder) {
builder.addSimpleReplacement(range.token(keyword), 'const');

View file

@ -19,7 +19,7 @@ class ReplaceWithConditionalAssignment extends CorrectionProducer {
@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
final node = this.node;
var ifStatement =
node is IfStatement ? node : node.thisOrAncestorOfType<IfStatement>();
if (ifStatement == null) {

View file

@ -67,6 +67,7 @@ class ShadowField extends CorrectionProducer {
builder.addInsertion(offset, (builder) {
// TODO(brianwilkerson) Conditionally write a type annotation instead of
// 'var' when we're able to discover user preferences.
// TODO(brianwilkerson) Consider writing `final` rather than `var`.
builder.write('var ');
builder.write(fieldName);
builder.write(' = this.');

View file

@ -19,7 +19,7 @@ class WrapInFuture extends CorrectionProducer {
// Extract the information needed to build the edit.
//
Expression? expression;
var node = this.node;
final node = this.node;
if (node is ReturnStatement) {
expression = node.expression;
} else if (node is Expression) {

View file

@ -73,7 +73,7 @@ class AddTypeParameter extends Change<_Data> {
return _TypeArgumentData(typeArguments, parent.argumentList.offset);
} else if (parent is MethodDeclaration) {
// invalid_override
var extendedType = this.extendedType;
final extendedType = this.extendedType;
if (extendedType != null && !extendedType.validate(context)) {
return null;
}
@ -130,7 +130,7 @@ class AddTypeParameter extends Change<_Data> {
void writeParameter(DartEditBuilder builder) {
builder.write(name);
var extendedType = this.extendedType;
final extendedType = this.extendedType;
if (extendedType != null) {
builder.write(' extends ');
extendedType.writeOn(builder, context);

View file

@ -114,7 +114,7 @@ extension on MethodDeclaration {
/// Return the parameter of this method whose name matches the given [name],
/// or `null` if there is no such parameter.
FormalParameter? parameterNamed(String name) {
var parameters = this.parameters;
final parameters = this.parameters;
if (parameters != null) {
for (var parameter in parameters.parameters) {
if (parameter.declaredElement?.name == name) {

View file

@ -92,7 +92,7 @@ class StatementAnalyzer extends SelectionAnalyzer {
@override
void visitDoStatement(DoStatement node) {
super.visitDoStatement(node);
var selectedNodes = this.selectedNodes;
final selectedNodes = this.selectedNodes;
if (_contains(selectedNodes, node.body)) {
invalidSelection(
"Operation not applicable to a 'do' statement's body and expression.");
@ -104,7 +104,7 @@ class StatementAnalyzer extends SelectionAnalyzer {
super.visitForStatement(node);
var forLoopParts = node.forLoopParts;
if (forLoopParts is ForParts) {
var selectedNodes = this.selectedNodes;
final selectedNodes = this.selectedNodes;
bool containsInit;
if (forLoopParts is ForPartsWithExpression) {
containsInit = _contains(selectedNodes, forLoopParts.initialization);
@ -132,7 +132,7 @@ class StatementAnalyzer extends SelectionAnalyzer {
@override
void visitSwitchStatement(SwitchStatement node) {
super.visitSwitchStatement(node);
var selectedNodes = this.selectedNodes;
final selectedNodes = this.selectedNodes;
List<SwitchMember> switchMembers = node.members;
for (var selectedNode in selectedNodes) {
if (switchMembers.contains(selectedNode)) {
@ -146,7 +146,7 @@ class StatementAnalyzer extends SelectionAnalyzer {
@override
void visitTryStatement(TryStatement node) {
super.visitTryStatement(node);
var firstSelectedNode = this.firstSelectedNode;
final firstSelectedNode = this.firstSelectedNode;
if (firstSelectedNode != null) {
if (firstSelectedNode == node.body ||
firstSelectedNode == node.finallyBlock) {
@ -169,7 +169,7 @@ class StatementAnalyzer extends SelectionAnalyzer {
@override
void visitWhileStatement(WhileStatement node) {
super.visitWhileStatement(node);
var selectedNodes = this.selectedNodes;
final selectedNodes = this.selectedNodes;
if (_contains(selectedNodes, node.condition) &&
_contains(selectedNodes, node.body)) {
invalidSelection(

View file

@ -55,7 +55,7 @@ class RefactoringStatus {
/// Returns the message of the [RefactoringProblem] with highest severity;
/// may be `null` if no problems.
String? get message {
var problem = this.problem;
final problem = this.problem;
if (problem == null) {
return null;
}

View file

@ -168,15 +168,15 @@ class PubPackageService {
/// Begin a request to pre-load the package name list.
void beginPackageNamePreload() {
// If first time, try to read from disk.
var packageCache = this.packageCache;
if (packageCache == null) {
packageCache ??= readDiskCache() ?? PackageDetailsCache.empty();
this.packageCache = packageCache;
var cache = packageCache;
if (cache == null) {
cache ??= readDiskCache() ?? PackageDetailsCache.empty();
packageCache = cache;
}
// If there is no queued request, initialize one when the current cache expires.
_nextPackageNameListRequestTimer ??=
Timer(packageCache.cacheTimeRemaining, _fetchFromServer);
Timer(cache.cacheTimeRemaining, _fetchFromServer);
}
/// Gets the cached package details for package [packageName].

View file

@ -121,7 +121,7 @@ class ExtractLocalRefactoringImpl extends RefactoringImpl
Future<SourceChange> createChange() {
var change = SourceChange(refactoringName);
// prepare occurrences
List<SourceRange> occurrences;
late final List<SourceRange> occurrences;
if (extractAll) {
occurrences = this.occurrences;
} else {
@ -130,7 +130,7 @@ class ExtractLocalRefactoringImpl extends RefactoringImpl
occurrences.sort((a, b) => a.offset - b.offset);
// If the whole expression of a statement is selected, like '1 + 2',
// then convert it into a variable declaration statement.
var singleExpression = this.singleExpression;
final singleExpression = this.singleExpression;
if (singleExpression != null &&
singleExpression.parent is ExpressionStatement &&
occurrences.length == 1) {
@ -490,7 +490,7 @@ class ExtractLocalRefactoringImpl extends RefactoringImpl
// prepare selection
String? selectionSource;
var singleExpression = this.singleExpression;
final singleExpression = this.singleExpression;
if (singleExpression != null) {
var tokens = TokenUtils.getNodeTokens(singleExpression);
selectionSource = _encodeExpressionTokens(singleExpression, tokens);

View file

@ -93,7 +93,7 @@ class RenameLocalRefactoringImpl extends RenameRefactoringImpl {
/// Fills [elements] with [Element]s to rename.
Future _prepareElements() async {
var element = this.element;
final element = this.element;
if (element is ParameterElement && element.isNamed) {
elements = await getHierarchyNamedParameters(searchEngine, element);
} else {

View file

@ -117,7 +117,7 @@ extension FunctionBodyExtensions on FunctionBody {
extension MethodDeclarationExtension on MethodDeclaration {
Token? get propertyKeywordGet {
var propertyKeyword = this.propertyKeyword;
final propertyKeyword = this.propertyKeyword;
return propertyKeyword != null && propertyKeyword.keyword == Keyword.GET
? propertyKeyword
: null;
@ -126,7 +126,7 @@ extension MethodDeclarationExtension on MethodDeclaration {
extension VariableDeclarationListExtension on VariableDeclarationList {
Token? get finalKeyword {
var keyword = this.keyword;
final keyword = this.keyword;
return keyword != null && keyword.keyword == Keyword.FINAL ? keyword : null;
}
}

View file

@ -218,7 +218,7 @@ class _RequestStatisticsItem {
_RequestStatisticsItem(this.name, {this.timeValue});
Map<String, Object> toJson() {
var timeValue = this.timeValue;
final timeValue = this.timeValue;
if (timeValue != null) {
return {
'name': name,

View file

@ -379,8 +379,8 @@ class MatchesJsonObject extends _RecursiveMatcher {
mismatches.add(simpleDescription('is not a map'));
return;
}
var requiredFields = this.requiredFields;
var optionalFields = this.optionalFields;
final requiredFields = this.requiredFields;
final optionalFields = this.optionalFields;
if (requiredFields != null) {
requiredFields.forEach((String key, Matcher valueMatcher) {
if (!item.containsKey(key)) {

View file

@ -799,7 +799,7 @@ main() {
}
''');
await findElementReferences('ppp;', false);
var searchElement = this.searchElement!;
final searchElement = this.searchElement!;
expect(searchElement.kind, ElementKind.PREFIX);
expect(searchElement.name, 'ppp');
expect(searchElement.location!.startLine, 1);

View file

@ -1760,11 +1760,11 @@ void f(bool p, bool p2, bool p3) {
var status = await refactoring.checkInitialConditions();
assertRefactoringStatusOK(status);
// configure
var deleteSource = this.deleteSource;
final deleteSource = this.deleteSource;
if (deleteSource != null) {
refactoring.deleteSource = deleteSource;
}
var inlineAll = this.inlineAll;
final inlineAll = this.inlineAll;
if (inlineAll != null) {
refactoring.inlineAll = inlineAll;
}

View file

@ -287,8 +287,8 @@ class DiffRecord {
/// Return `true` if this diff applies to a file with the given name.
bool isFor(String fileName) {
var srcPath = this.srcPath;
var dstPath = this.dstPath;
final srcPath = this.srcPath;
final dstPath = this.dstPath;
return (srcPath != null && fileName == path.basename(srcPath)) ||
(dstPath != null && fileName == path.basename(dstPath));
}

View file

@ -80,7 +80,7 @@ class ExpectedError {
if (message != null && error.message != message) {
return false;
}
var messageContains = this.messageContains;
final messageContains = this.messageContains;
if (messageContains != null &&
error.message.contains(messageContains) != true) {
return false;

View file

@ -436,7 +436,7 @@ class CompletionMetrics {
/// Perform any operations required in order to revert computing the kind of
/// completions represented by this metrics collector.
void disable() {
var disableFunction = this.disableFunction;
final disableFunction = this.disableFunction;
if (disableFunction != null) {
disableFunction();
}
@ -445,7 +445,7 @@ class CompletionMetrics {
/// Perform any initialization required in order to compute the kind of
/// completions represented by this metrics collector.
void enable() {
var enableFunction = this.enableFunction;
final enableFunction = this.enableFunction;
if (enableFunction != null) {
enableFunction();
}

View file

@ -224,7 +224,7 @@ function selectEntryGroup(pageStart) {
/// Write the entries in the instrumentation log to the given [sink].
void _writeLeftColumn(StringSink sink) {
var length = entries.length;
var pageLength = this.pageLength;
final pageLength = this.pageLength;
var pageEnd =
pageLength == null ? length : math.min(pageStart + pageLength, length);
//

View file

@ -202,7 +202,7 @@ class Notification extends ApiNode {
value: '$domainName.$event')
];
var params = this.params;
final params = this.params;
if (params != null) {
fields.add(TypeObjectField('params', params, null));
}
@ -275,7 +275,7 @@ class Request extends ApiNode {
value: '$domainName.$method')
];
var params = this.params;
final params = this.params;
if (params != null) {
fields.add(TypeObjectField('params', params, null));
}
@ -292,7 +292,7 @@ class Request extends ApiNode {
optional: true)
];
var result = this.result;
final result = this.result;
if (result != null) {
fields.add(TypeObjectField('result', result, null));
}